前言:在使用js进行浮点数运算的时候经常会出现精度出现误差的情况,如下:
这是因为语言本身没有对浮点数这类数据类型进行像其他高级语言的处理。
所以我们在处理类似运算时可以借助相关Math.js进行精度问题处理。math.js本身是非常强大的一款js数学运算插件库。
下载:npm install mathjs
引入:import * as math from 'mathjs'
浮点数运算复杂的写法:
加:math.format(math.add(math.bignumber(1.1),math.bignumber(2.2)))
减:math.format(math.subtract(math.bignumber(1.1),math.bignumber(2.2)))
乘:math.format(math.multiply(math.bignumber(1.1),math.bignumber(2.2)))
除:math.format(math.divide(math.bignumber(1.1),math.bignumber(2.2)))
其中bignumber()方法是进行数值类型声明,即表示该数值类型是浮点数,需要进行精度计算;
format()方法是格式化校验方法,把math方法计算出的值以字符串的形式显示最终的结果。故而如上的写法得到的值类型都是string;
简单的写法:
math.format(math.evaluate('1.1+2.2'))
但是进行这种简便写法的时候需要先进行相应的配置,否则得到的结果并不会按照浮点数进行相应的运算获得想要的精度结果,而还是会
获得之前后面会带一堆小数的有误差的值
配置如下:
import { create, all} from 'mathjs';
const math= create(all);
math.config({ number: 'BigNumber' });
最后再进行刚刚的运算:
math.format(math.evaluate('1.1+2.2')) //3.3
这样就能愉快的进行浮点数运算了^-^