diff --git a/include/boost/multiprecision/cpp_float.hpp b/include/boost/multiprecision/cpp_float.hpp index 41ad3005..7a33dfa9 100644 --- a/include/boost/multiprecision/cpp_float.hpp +++ b/include/boost/multiprecision/cpp_float.hpp @@ -1755,13 +1755,13 @@ std::string cpp_float::str(std::streamsize number_of_digits, std::ios_ str.append(1, 'e'); str.append(boost::lexical_cast(my_exp)); } - if(showpoint || scientific) + if((showpoint || scientific) && (number_of_digits != (std::numeric_limits::max)())) { std::streamsize chars = str.size() - 1; BOOST_ASSERT(str.find('.') != std::string::npos); // there must be a decimal point!! chars = number_of_digits - chars; if(chars > 0) - str.append(chars, '0'); + str.append(static_cast(chars), '0'); } if(isneg()) str.insert(0, 1, '-');