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)