diff --git a/include/CLI/TypeTools.hpp b/include/CLI/TypeTools.hpp index 3979e0cb..17997446 100644 --- a/include/CLI/TypeTools.hpp +++ b/include/CLI/TypeTools.hpp @@ -1652,13 +1652,10 @@ inline std::string sum_string_vector(const std::vector &values) { output.append(arg); } } else { - if(val <= static_cast((std::numeric_limits::min)()) || - val >= static_cast((std::numeric_limits::max)()) || - std::ceil(val) == std::floor(val)) { - output = detail::value_string(static_cast(val)); - } else { - output = detail::value_string(val); - } + std::ostringstream out; + out.precision(16); + out << val; + output = out.str(); } return output; } diff --git a/tests/AppTest.cpp b/tests/AppTest.cpp index fe9488a6..d0a8769e 100644 --- a/tests/AppTest.cpp +++ b/tests/AppTest.cpp @@ -11,6 +11,7 @@ #include #include #include +#include TEST_CASE_METHOD(TApp, "OneFlagShort", "[app]") { app.add_flag("-c,--count"); @@ -828,7 +829,7 @@ TEST_CASE_METHOD(TApp, "SumOptFloat", "[app]") { run(); - CHECK(0.6 == val); + CHECK(std::fabs(0.6 - val) <= std::numeric_limits::epsilon()); } TEST_CASE_METHOD(TApp, "SumOptString", "[app]") {