import {create, all} from 'mathjs';
const math = create(all, {
epsilon: 1e-12,
matrix: 'Matrix',
number: 'number',
precision: 64,
predictable: false,
randomSeed: null
});
math.config()
math.config({
number: 'BigNumber',
)
const {format, bignumber, add, subtract, multiply, divide} = math;
- format
可以获取到 Decimal 类的值
如果不能直接拿到结果,可以使用这个试一下
format(add(bigNumber(0.1), bigNumber(0.2))) // 这种情况下 add返回的就是 Decimal 类型,format可以直接拿到值 - bignumber
告诉mathjs 这个值是个 浮点数,不使用这个,mathjs精度还是有误差的 - add 加
add(x, y) - subtract 减
subtract(x, y) - multiply 乘
multiply(x, y) - divide 除
divide(x, y) - chain 链式操作调用
chain(5).add(2).subtract(1).done() // 5 + 2 - 1
除了 done() 也可使用 toString() valueOf() 拿到结果 - evaluate 直接书写 运算表达式就能运算
evaluate(‘5 + 2 - 1’)
import {create, all} from 'mathjs';
const math = create(all, {
number: 'BigNumber',
});
const {format, bignumber, add, subtract, multiply, divide} = math;
export default {
fourOpera(type: 'add'|'subtract'|'multiply'|'divide', ...rest: number[]) {
let opear = add;
switch (type) {
case 'add':
opear = add;
break;
case 'subtract':
opear = subtract;
break;
case 'multiply':
opear = multiply;
break;
case 'divide':
opear = divide;
break;
}
return rest.reduce((total, item) => +format(opear(bignumber(total), bignumber(item))));
},
};