我只是想问一下setprecision,因为我有点困惑.
这里是代码:
#include <iostream> #include <iomanip> using namespace std; int main() { double rate = x; cout << fixed << setprecision(2) << rate; }
其中x =以下:
方程的左边是x的值.
1.105 = 1.10应为1.11
1.115 = 1.11应为1.12
1.125 = 1.12应为1.13
1.135 = 1.14是正确的
1.145 = 1.15也正确
但如果x是:
2.115 = 2.12是正确的
2.125 = 2.12应为2.13
所以为什么在一定的价值是正确的,但有时是错误的?
请启发我谢谢
解决方法
没有理由期望使用浮点系统可以正确地表示您的帖子中的任何常量.因此,一旦将它们存储在一个双变量中(不管iostream如何围绕这样的数字),那么你所拥有的确切的一半可能不再是精确的一半.
以下代码说明了我的观点:
#include <iostream> #include <iomanip> using namespace std; int main() { double rate = 1.115; cout << fixed << setprecision(20) << rate; }
输出:
1.11499999999999999112
我建议你看看FAQ.