浮点数乘法的问题

发布于 2022-08-31 20:34:37 字数 423 浏览 17 评论 0

最近在进行浮点数运算的时候经常遇见精度问题,基本原理我也知道了,就是一些小数使用二进制表示的时候是无穷多位的,一个浮点数的64位没办法全部表示,导致出现误差。这样的话,二进制的加法和减法出现误差也是同理。比如0.7 + 0.1 0.7 - 0.43等。

在乘法和除法运算的时候也会出现这个问题,但是我对二进制的乘法和除法不了解,网上的资料也看不大懂。为什么81.6 * 10 81.6 * 100结果也不一样。一个小数点后面 n 位的小数乘以10的 n 次方是否一定是一个能准确表达的数值呢?

图片描述

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

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

发布评论

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

评论(1

暗恋未遂 2022-09-07 20:34:37

乘以 10 的冪不行的。乘以 2 的冪才可以,因为那是二进制,不是十进制。不过你的小数本身能不能准确表达为二进制浮点数也是个问题。

如果你需要十进制运算,可以使用 decimal 数据类型(如果你的语言有库支持的话)。

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