
All tests except one pass with my refactored code.
Unfortunately, test_float_io.cpp fails when round tripping from cpp_dec_float to a string with a large exponent back to cpp_dec_float.
OK good, I'd like that to work if possible, it seems like something users would want and/or expect?
What I can't figure out, though, is if a floating-point type actually *should* round-trip back from a string in scientific format with (max_digits10 + 1) precision. Remember, that kind of string has (max_digits10 + 1) after the decimal point plus one digit in the mantissa. That would be like asking 8-byte double to be exact when round-tripping with 17 decimal digits of precision since the scientific notation would have 1+16 decimal digits. Would a *relative-to-epsilon* kind of test, maybe, be more correct (correct-er) in test_float_io.cpp? Is *correcter* a word other than the one who corrects? template <class T> void do_round_trip(const T& val, std::ios_base::fmtflags f) { std::stringstream ss; ss.flags(f); ss << std::setprecision(std::numeric_limits<T>::digits10) << val; T new_val = ss.str(); BOOST_CHECK_CLOSE(new_val, val, std::numeric_limits<T>::epsilon()); new_val = val.str(0, f); BOOST_CHECK_CLOSE(new_val, val, std::numeric_limits<T>::epsilon()); } Best regards, Chris.