参考
How do I print a double value with full precision using cout?
和
What is the meaning of numeric_limits<double>::digits10
我有点困惑。
我用过:
ss.precision(std::numeric_limits<double>::digits10);
或
ss.precision(std::numeric_limits<double>::digits10 + 2);
获得最大双精度?
答案 0 :(得分:1)
它取决于数据中“十进制组件”的数量。
std :: numeric_limits :: digits10将给出“浮动组件”的最大数量
ios_base :: precision指定要显示的位数(十进制+浮点组件)。
如果您的小数部分总是小于100(-99到99),则下面的代码总是给出最大精度。
ss.precision(std::numeric_limits<double>::digits10 + 2);
答案 1 :(得分:0)
根据What is the meaning of numeric_limits<double>::digits10,特别是最高投票答案,std::numericlimits<double>::digits10
是:
您可以表示的最大位数而不会损失精度。
这意味着如果你将ss.precision设置为,那么这些浮点数将是准确的;如果你将它设置为+2,你仍然会显示+ 2位数字,但不保证最后两位数字的准确计算。