Java 中的 float、double 和 int 数学
我对 Java 中的数学有一些疑问/问题,所以我制作了一个小程序,您可以在此链接中看到其屏幕截图:
http://www.imageshuffle.com/view.php?filename=73doublevsfloat.jpg
这样的数字怎么可能呢?
无论你怎么看,f / i
都应该是 0.0155
无论你怎么看,i * f
都应该是 155
i + f
应为 101.55
i - f
应为 98.45
等。与 double 相同。
那么什么给出呢?为什么 Java 中的数学如此不正确?
I had some doubts/questions about the math in Java, so I made a small program a screenshot of which you can see in this link:
http://www.imageshuffle.com/view.php?filename=73doublevsfloat.jpg
How are such numbers even possible?
f / i
should be 0.0155
no matter how you look at iti * f
should be 155
no matter how you look at iti + f
should be 101.55
i - f
should be 98.45
etc. Same with double.
So what gives? Why is math in Java so incorrect?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
发生这种情况是因为
i /= f
修改了i
:它相当于i = i / f
(加上舍入)。因此,当您执行
f / i
时,i
约为 65,而不是 100。That happens because
i /= f
modifiesi
: it's equivalent ofi = i / f
(plus rounding).Thus, when you execute
f / i
,i
is ~65 instead of 100.