在c轮中设定精度?如果是这样,为什么我看到这个?

前端之家收集整理的这篇文章主要介绍了在c轮中设定精度?如果是这样,为什么我看到这个?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下代码片段输出0.29847,当我预期为0.29848:
double f = 0.298475;
cout << setprecision(5) << f << endl;

但是,对于其他例子,我观察到四舍五入:

double f = 0.123459;
cout << setprecision(5) << f << endl;

输出:0.12346

double f = 0.123454;
cout << setprecision(5) << f << endl;

输出:0.12345

解决方法

数字0.298475不能在双精度中表示(因为它的分母不是分母是2的幂,为11939/40000),实际存储的数字实际上比0.29848更接近0.29847.

猜你在找的C&C++相关文章