小问题:输出1.0/3.0*3结果等于1.000000?

发布于 2022-10-15 08:12:42 字数 80 浏览 30 评论 0

1.0/3.0结果应该是一个浮点数,是有效位数限定的,再乘3为什么还会是1呢?我看的是谭浩强老师的书,里边说“1.0/3.0*3的结果并不等于1”,疑惑中...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

平安喜乐 2022-10-22 08:12:42

浮点数不精确导致的

毁梦 2022-10-22 08:12:42

LZ是说printf的结果?这个已经是被处理过了的(可能是四舍五入吧)

云雾 2022-10-22 08:12:42

本帖最后由 sabrisu 于 2011-04-29 16:21 编辑

回复 3# hellioncu

  1. #include<stdio.h>
  2.    
  3.     int main(void)
  4.      {
  5.          printf("%f",1.0/3.0*3);
  6.          return 0;
  7.      }

复制代码这个问题很困惑,我找一些详细的文章看看.

鲜肉鲜肉永远不皱 2022-10-22 08:12:42

研究浮點數的存儲方式。

稳稳的幸福 2022-10-22 08:12:42

不等于1就正常了

春风十里 2022-10-22 08:12:42

本帖最后由 sabrisu 于 2011-04-29 21:29 编辑

回复 6# egmkang

    现在我编译运行的结果是1.000000的,继续疑惑中...

你在看孤独的风景 2022-10-22 08:12:42

回复 5# nizvoo

    刚拿到一本组成原理

音栖息无 2022-10-22 08:12:42

回复  nizvoo

    刚拿到一本组成原理
sabrisu 发表于 2011-04-29 21:28

看CSAPP吧……那裡面說得很詳細

戏舞 2022-10-22 08:12:42
  1.         double fraction=(1.0/3.0)*3;
  2.         if(fraction)
  3.                 printf("1/3*3=: %f\n",fraction);
  4.         else
  5.                 printf("right!");

复制代码和楼主同样疑惑,上面代码会输出1,不明白为什么,请教各位大神!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文