①首先介绍JavaScript运算精度丢失的背景
计算机通过二进制来存储并处理数字,不能精确表示浮点数,但是JavaScript没有封装的类来处理浮点数,直接计算会使浮点数丢失计算精度。
例子一:
0.1=0.0001 1001 1001 1001 1001 1001 1001 1010(1001循环下去)
0.2=0.0011 0011 0011 0011 0011 0011 0011 0011(0011循环下去)
0.1和0.2相加的结果用二进制计算出来是0.0100 1100 1100 1100 1100 1100 1100 1101(转换成十进制为0.30000000004)
例子二:
ToFixed函数不能进行四舍五入
1.335.toFixed(2); ---返回的结果是1.33
②使用Math.js弥补JavaScript运算精度的问题
通过npm安装math.js
npm install mathjs
在competent.ts中引用
// load math.js
import * as math from 'mathjs'