加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Setprecision是混乱

发布时间:2020-12-16 07:49:27 所属栏目:百科 来源:网络整理
导读:我只是想问一下setprecision,因为我有点困惑. 这里是代码: #include iostream#include iomanipusing namespace std;int main(){ double rate = x; cout fixed setprecision(2) rate;} 其中x =以下: 方程的左边是x的值. 1.105 = 1.10应为1.11 1.115 = 1.11
我只是想问一下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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读