我正在阅读 Nicolai M. Josuttis 所著的“C++ 标准库 - 教程和参考”,第 15 章:使用流类的输入/输出。 在 15.7.6 浮点表示法中,有一个表格解释了某些数字的一般格式如何工作。
通用格式是开发人员既没有选择固定符号也没有选择科学记数法时所应用的格式。
精度() | 421.0 | 0.0123456789 |
---|---|---|
2 | 4.2e+02 | 0.012 |
6 | 421 | 0.0123457. |
该表显示了如何根据分配给输出流的精度值来格式化和打印浮点数。 例如,
std::cout << std::setprecision(2) << 421.0 << std::endl;
会打印4.2e+02
我不明白为什么对于
precision = 2
,在一般格式中,0.0123456789 打印 0.012,它显示的有效数字位数大于精度值。
我原以为它会打印 0.01 而不是 0.012
它工作正常只是因为在这种情况下精度意味着有效数字的数量,它是一个数学术语。例如。数字 0.00078 有 2 个有效数字 - 78。不要与小数点后的位数(即小数位数)混淆。