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.