c – Setprecision是混乱

前端之家收集整理的这篇文章主要介绍了c – Setprecision是混乱前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只是想问一下setprecision,因为我有点困惑. @H_301_2@这里是代码

#include <iostream>
#include <iomanip>
using namespace std;

int main()

{
  double rate = x;
  cout << fixed << setprecision(2) << rate;
}
@H_301_2@其中x =以下:

@H_301_2@方程的左边是x的值.

@H_301_2@1.105 = 1.10应为1.11

@H_301_2@1.115 = 1.11应为1.12

@H_301_2@1.125 = 1.12应为1.13

@H_301_2@1.135 = 1.14是正确的

@H_301_2@1.145 = 1.15也正确

@H_301_2@但如果x是:

@H_301_2@2.115 = 2.12是正确的

@H_301_2@2.125 = 2.12应为2.13

@H_301_2@所以为什么在一定的价值是正确的,但有时是错误的?

@H_301_2@请启发我谢谢

解决方法

没有理由期望使用浮点系统可以正确地表示您的帖子中的任何常量.因此,一旦将它们存储在一个双变量中(不管iostream如何围绕这样的数字),那么你所拥有的确切的一半可能不再是精确的一半. @H_301_2@以下代码说明了我的观点:

#include <iostream>
#include <iomanip>

using namespace std;

int main()

{
  double rate = 1.115;
  cout << fixed << setprecision(20) << rate;
}
@H_301_2@输出

1.11499999999999999112
@H_301_2@我建议你看看FAQ.

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