问题描述
在写简单计算器时遇到过,把字符串解析成浮点数算减法,得到过 这样的结果 5-3.2=1.7999999999999998,很奇怪。
问题分析
JavaScript
中计算小数运算时,会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制,这里就出现了第一次的误差。待小数都换算为二进制后,再进行二进制间的运算,得到二进制结果。然后再将二进制结果换算为十进制,这里通常会出现第二次的误差。
详细的可以看 这里。
在写简单计算器时遇到过,把字符串解析成浮点数算减法,得到过 这样的结果 5-3.2=1.7999999999999998,很奇怪。
JavaScript
中计算小数运算时,会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制,这里就出现了第一次的误差。待小数都换算为二进制后,再进行二进制间的运算,得到二进制结果。然后再将二进制结果换算为十进制,这里通常会出现第二次的误差。
详细的可以看 这里。
本文标题:js 小数计算精度问题
文章作者:水中熊
发布时间:2018年06月13日 - 14:06
最后更新:2018年06月13日 - 15:06
原始链接:https://shuizhongxiong.github.io/js-precision.html
许可协议: 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。 转载请保留原文链接及作者。
微信支付
支付宝