美文网首页
JS的计算精度问题

JS的计算精度问题

作者: 李霖弢 | 来源:发表于2022-12-11 16:20 被阅读0次

    如 0.1 + 0.2 = 0.30000000000000004
    注意,单纯的先乘后加减再除是没用的,例如600.3*100直接就等于60029.99999999999了

    原因

    JS中数字的本质是双精度浮点数,而浮点数用二进制表达时是无穷的,相加后再转化回十进制时就产生了截断。

    解决方案

    • 使用类库 Math.js、decimal.js
    • 手写方案
      原理通常为将浮点数转换字符串,分隔成为整数部分和小数部分,小数部分再转换为整数,计算结果后,再转换为浮点数。目前可以用parseFloat((数学表达式).toFixed(digits))代替(调用toFixed时因精度缩小,会自动四舍五入)。

    相关文章

      网友评论

          本文标题:JS的计算精度问题

          本文链接:https://www.haomeiwen.com/subject/hhvfqdtx.html