美文网首页
JavaScript 浮点数计算精度丢失问题

JavaScript 浮点数计算精度丢失问题

作者: 前端mh | 来源:发表于2022-03-02 14:41 被阅读0次

当计算机在计算小数位的加减乘除的时候会出现精度丢失的现象,如下:

    // 加法
    0.1 + 0.2 = 0.30000000000000004

    // 减法
    1.5 - 1.2 = 0.30000000000000004

    // 乘法
    0.8 * 3 = 2.4000000000000004

    // 除法
    0.3 / 0.1 = 2.9999999999999996

原因:这是由于在计算机的角度计算的是二进制而不是十进制,所以在计算的时候先将十进制转换成二进制,而在转换中部分的十进制的浮点数会变成二进制的无限不循环小数,而计算机在可以支持浮点数的小数部分到52位,然后再转换成十进制进行加减乘除的运算,这样得到的计算结果便不在准确了。

部分十进制转二进制
    0.1=====>0.0001 1001 1001 1001 ...

    0.2=====>0.0100 1100 1100 1100 ...

    0.4=====>0.0110 0110 0110 0110 ...

    0.5=====>0.1

    0.6=====>0.1001 1001 1001 1001 ...

解决方案 - Math.js

对于任意精度的计算,math.js 支持BigNumber 数据类型。
安装 npm install mathjs 或者使用cdn

注意事项:请注意,在 TypeScript 项目中使用 mathjs 时,您还必须安装类型定义文件:npm install @types/mathjs

使用:

let add = math.number(math.add(math.bignumber(0.1), math.bignumber(0.2)))
console.log(add); //0.3

相关文章

  • javascript 浮点数字计算精度丢失

    0.1+0.2 === 0.3 ???0.30000000000000004 2.4/0.8 = 3 ???2.9...

  • 避开JavaScript浮点数计算精度问题

    案例分析 最近在处理将小数转换成百分数的时候遇见一个问题,比如讲0.17换算成17%,用过滤器来实现: 然而显示的...

  • 2018-11-04-1

    java double计算精度问题 double计算防止精度丢失:方案:将double转成bigDecimalSy...

  • javaScript 小数计算精度丢失

    情景举例 : 有天对象问我一个问题,说前端计算有Bug,根据她的描述我抱着怀疑的态度去控制台试了试,写了一个22...

  • JavaScript 计算精度问题; 科学计数问题

    本篇文章主要解决JavaScript中的计算精度问题和科学计数显示问题。例如:99969998.99999993 ...

  • js精度问题

    关于js浮点数计算精度不准确问题的解决办法 今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一...

  • JavaScript浮点数的精度问题深究

    JavaScript浮点数的精度问题 javascript浮点数的精度问题是老生常谈了,但往往只知道0.1 + 0...

  • 浮点数计算精度问题

    产生的原因 计算机在进行运算时是将数值转为二进制后计算,我们可以通过num.toString(2)这个方法查看转为...

  • Javascript计算精度问题

    Javascript是弱类型语言,在进行浮点数计算时会有误差出现(这在很多语言中都是存在的,只是其他语言内部会去规...

  • js浮点运算

    前言 在项目开发过程中发现浮点数的运算会出现精度问题,尤其是乘除运算。产生浮点数计算精度不准确的原因: 在计算机角...

网友评论

      本文标题:JavaScript 浮点数计算精度丢失问题

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