Vin*_*ent 2 c++ floating-point iostream iomanip floating-point-precision
我已经阅读了几个关于用C++显示浮点数的主题,我找不到令人满意的答案.
我的问题是: 如何以科学的格式(尾数/指数)显示C++中浮点数的所有有效数字?
问题是所有数字在基数10中没有相同的有效位数.
例如,a double具有15到17个有效十进制数字精度,但std::numeric_limits<double>::digits10返回15,因此,对于某些数字,我将丢失2个额外十进制数字的精度.
该值std::numeric_limits<double>::digits10提供可以安全恢复的十进制数字的数量,即在往返double十进制 - > - >十进制中存活的十进制数字的数量.假设更多十进制数字是正确的没有帮助.如果你想方便往返double- > decimal-> double你会使用std::numeric_limits<double>::max_digits10.
如果你想要你使用的确切值,std::numeric_limits<double>::digits但它会以有趣的方式显示从十进制值转换的数字,因为它们通常是舍入值.这也是max_digits10为人类消费呈现数字时没有用的原因:最后几位通常不是人类读者所期望的数字.