diff --git a/src/Nazara/Core/StringStream.cpp b/src/Nazara/Core/StringStream.cpp index 06a6e03c4..4b206489e 100644 --- a/src/Nazara/Core/StringStream.cpp +++ b/src/Nazara/Core/StringStream.cpp @@ -229,7 +229,7 @@ namespace Nz // Use a temporary buffer to prevent 1kb string capacity growth std::array buffer; - std::size_t written = std::snprintf(buffer.data(), buffer.size(), "%f", number); + std::size_t written = std::snprintf(buffer.data(), buffer.size(), "%.6f", number); std::size_t start = m_result.GetSize(); m_result.Resize(start + written); @@ -251,7 +251,7 @@ namespace Nz // Use a temporary buffer to prevent 1kb string capacity growth std::array buffer; - std::size_t written = std::snprintf(buffer.data(), buffer.size(), "%f", number); + std::size_t written = std::snprintf(buffer.data(), buffer.size(), "%.6Lf", number); std::size_t start = m_result.GetSize(); m_result.Resize(start + written); diff --git a/tests/Engine/Core/StringStream.cpp b/tests/Engine/Core/StringStream.cpp index 5efb9e926..ece0d352c 100644 --- a/tests/Engine/Core/StringStream.cpp +++ b/tests/Engine/Core/StringStream.cpp @@ -49,13 +49,22 @@ SCENARIO("StringStream", "[CORE][STRINGSTREAM]") REQUIRE(stringStream.ToString() == "default-33-33"); } - AND_WHEN("We add floating points") + AND_WHEN("We add round floating points") { stringStream << 3.f; stringStream << 3.0; stringStream << 3.0L; - REQUIRE(stringStream.ToString() == "default333"); + REQUIRE(stringStream.ToString() == "default3.0000003.0000003.000000"); + } + + AND_WHEN("We add floating points") + { + stringStream << 3.5f << ' '; + stringStream << 3.65 << ' '; + stringStream << 3.6478L; + + REQUIRE(stringStream.ToString() == "default3.500000 3.650000 3.647800"); } AND_WHEN("We add string and pointer")