考虑:
#include <iostream>
#include <iomanip>
int main()
{
std::cout << std::fixed << std::setprecision(2);
std::cout << 0.125 << '\n'; // Prints "0.12"
std::cout << 0.126 << '\n'; // Prints "0.13" as expected
}
我知道 float 学并不完全精确,但 0.125
不是实际精确表示的值之一吗?为什么格式化时会向下舍入到 "0.12"
而不是向上舍入到 "0.13"
?
最佳答案
是的,0.125
是少数应该具有精确二进制表示的浮点值之一。
您的舍入模式可能设置为 round-half-to-even .
关于c++ - 为什么使用 2 位小数精度格式化的 0.125 显示 "0.12"而不是 "0.13"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72493660/