Java 中的 float、double 和 int 数学

发布于 2024-10-09 11:53:41 字数 495 浏览 3 评论 0原文

我对 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 it
i * f should be 155 no matter how you look at it
i + 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 技术交流群。

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

发布评论

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

评论(1

豆芽 2024-10-16 11:53:41

发生这种情况是因为 i /= f 修改了 i:它相当于 i = i / f(加上舍入)。
因此,当您执行 f / i 时,i 约为 65,而不是 100。

That happens because i /= f modifies i: it's equivalent of i = i / f (plus rounding).
Thus, when you execute f / i, i is ~65 instead of 100.

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