From a2c0a9c5514e7cb9dbf9674843ba806b459d3544 Mon Sep 17 00:00:00 2001 From: Cedric Nugteren Date: Fri, 20 Jan 2017 11:13:44 +0100 Subject: Set number of decimals for floating-point printing for error reporting --- src/utilities/utilities.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'src/utilities') diff --git a/src/utilities/utilities.cpp b/src/utilities/utilities.cpp index 663fdffa..fd198c0d 100644 --- a/src/utilities/utilities.cpp +++ b/src/utilities/utilities.cpp @@ -127,23 +127,27 @@ std::string ToString(T value) { } template std::string ToString(int value); template std::string ToString(size_t value); -template std::string ToString(float value); -template std::string ToString(double value); +template <> +std::string ToString(float value) { + std::ostringstream result; + result << std::fixed << std::setprecision(2) << value; + return result.str(); +} +template <> +std::string ToString(double value) { + std::ostringstream result; + result << std::fixed << std::setprecision(2) << value; + return result.str(); +} // If not possible directly: special cases for complex data-types template <> std::string ToString(float2 value) { - std::ostringstream real, imag; - real << std::setprecision(2) << value.real(); - imag << std::setprecision(2) << value.imag(); - return real.str()+"+"+imag.str()+"i"; + return ToString(value.real())+"+"+ToString(value.imag())+"i"; } template <> std::string ToString(double2 value) { - std::ostringstream real, imag; - real << std::setprecision(2) << value.real(); - imag << std::setprecision(2) << value.imag(); - return real.str()+"+"+imag.str()+"i"; + return ToString(value.real())+"+"+ToString(value.imag())+"i"; } // If not possible directly: special case for half-precision -- cgit v1.2.3