[ 已解决]js中65.4乘100为什么等于6540.000000000001

发布于 2022-09-07 08:53:55 字数 84 浏览 22 评论 0

如题~
如何彻底根除浮点数运算精度问题?
用四舍五入在钱方面不太合理
用*100再/100的方式,在遇到特殊数值的时候还是会出现精度问题

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

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

发布评论

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

评论(2

绝不服输 2022-09-14 08:53:55

题主还记得0.1+0.2!= 0.3吗?因为 JS 采用 IEEE 754 双精度版本(64位),并且只要采用 IEEE 754 的语言都有该问题。计算机表示十进制是采用二进制表示的,整数除以2,商继续除以2,得到0为止,将余数逆序排列;小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。
比如22的二进制是10110;0.8125的二进制是0.1101。所以,0.4的二进制:0.4 = 0.01100110(0110)(0110) 表示循环),是无限循环的二进制。
解决方法:可以利用toFixed() 方法,该方法可把 Number 四舍五入为指定小数位数的数字:parseFloat((65.4*100).toFixed(10))
楼主可以看看这个链接:几道高级前端面试题解析
希望可以帮到你。

疧_╮線 2022-09-14 08:53:55

涉及到钱用分做单位比较方便

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