提出问题

下面的小数计算精度丢失问题,知道的朋友应该都知道。不过一般都是在后端进行计算再返回给前端进行展示,所以也不会成为问题。

const sum = 0.1 + 0.2
console.log('sum', sum)
// 0.30000000000000004

解决问题

但有时候也需要前端进行计算时,这个问题就需要被解决。
这里推荐使用decimal.js来处理。

import Decimal from 'decimal.js';

// 注意,sum是一个对象,需要调用toString,才能进行输出展示
const sum = Decimal(0.1).plus(0.2).toString();
console.log('sum', sum)
// 0.3

注意

某个版本add方法如果用0加上0会得到00,需要判断一下。

import Decimal from 'decimal.js';

const num1 = new Decimal(0);
const num2 = 0;

if (num2 !== 0) {
    num1.add(num2)
}

热饭班长
3.7k 声望434 粉丝

先去做,做出一坨狗屎,再改进。