【js】 操作小数的时候精度问题

 

 解决方案一:

 

 解决方案二:

引入外部bignumber.js

应用

1、安装和引用

// Node.js

npm install bignumber.js

const BigNumber = require('bignumber.js');

// ES6 module
import BigNumber from "./bignumber.js"

2、基本的加减乘除

const a = 9.99;
const b = 8.03;

//
let c = new BigNumber(a).plus(b).toNumber();

//
let d = new BigNumber(a).minus(b).toNumber();

//
let e = new BigNumber(a).multipliedBy(b).toNumber();

//
let f = new BigNumber(a).dividedBy(b).toNumber();

扩展:

理论上用有限的空间来存储无限的小数是不可能保证精确的,但我们可以处理一下得到我们期望的结果

当你拿到 1.4000000000000001 这样的数据要展示时,建议使用 toPrecision 凑整并 parseFloat 转成数字后再显示,如下:

parseFloat(1.4000000000000001.toPrecision(12)) === 1.4  // True

封装成方法就是:

function strip(num, precision = 12) {
  return +parseFloat(num.toPrecision(precision));
}

 

相关资料:

 

posted on 2022-06-28 11:26  smile轉角  阅读(180)  评论(0)    收藏  举报

导航