js计算时,会将十进制转换成二进制,再进行计算,但有些小数转换成二进制时候,出现了无限循环,由于位数有限,所以就出现了截取,所以就导致了再转化成十进制后结果的不精确.所以就出现了: 0.1+0.2 !== 0.3

了解math.js.

1、安装
npm install mathjs --save
2、引入
import * as math from 'mathjs'
3、操作
let type1 = math.bignumber(0.1)            // 使用math.js转换数据类型,才可保证计算的精确性
let type2 = math.bignumber(0.2)     
let result = math.number(math.add(type1, type2))    // 相加计算后需要再次转换为数值类型
运算方法名参数备注
math.add(a,b,c,…)参数个数>=2得到几个数字的和
math.subtract(a,b)参数个数=2得到 a-b 的结果, 不可连减
math.multiply(a,b,c,…)参数个数>=2得几个参数的乘积
math.divide(a,b)参数个数=2得到 a/b 的结果 ,不可连除
转换为bigNumber类型math.bignumber(a)浮点数,进行运算时,转换成bigNumber才能保证得到精确的结果
转换为数字类型math.number(a)bignumber为对象,此方法可以获取对象中的数字部分

其他类型库:bignumber.js API.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐