From 6db21d9a3601f3e37ee4baeec4f65983c1e16e24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Sat, 24 Feb 2018 07:19:30 -0800 Subject: [PATCH] Fixed issue #178. --- src/dtoa.cpp | 3 ++- tests/string_test.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/dtoa.cpp b/src/dtoa.cpp index d914938..8674c2e 100644 --- a/src/dtoa.cpp +++ b/src/dtoa.cpp @@ -314,7 +314,8 @@ namespace bx if (p2 < delta) { *K += kappa; - GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * s_kPow10[-kappa]); + const int index = -static_cast(kappa); + GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index < 9 ? s_kPow10[-static_cast(kappa)] : 0)); return; } } diff --git a/tests/string_test.cpp b/tests/string_test.cpp index da01ae3..00df4ea 100644 --- a/tests/string_test.cpp +++ b/tests/string_test.cpp @@ -274,6 +274,7 @@ TEST_CASE("toString double", "") REQUIRE(testToString(0.0000000001, "1e-10") ); REQUIRE(testToString(-270.000000, "-270.0") ); REQUIRE(testToString(2.225073858507201e-308, "2.225073858507201e-308") ); + REQUIRE(testToString(-79.39773355813419, "-79.39773355813419") ); } static bool testFromString(double _value, const char* _input)