mathJS应用

最近开发遇到存计算公式在字段里,前端取出来使用的问题。本来想着使用eval计算字符串的,且不说eval本身,直接使用也涉及到js的精度问题(eg: 0.1+0.2)上网查到使用eval制作简单计算器,与这个问题思路相同,但是同样没有直接解决精度问题,后来看到mathjs既能解决eval问题又能解决精度问题,着实好用。

mathjs

mathJS是一个广泛用于javascript和nodejs的数学库。

它具有支持符号计算的灵活表达式解析器,大量内置函数和常量,并提供了一个集成解决方案来处理不同的数据类型,例如数字,大数,复数,分数,单位和 矩阵。 强大且易于使用。介绍译自官网=》math.js | an extensive math library for JavaScript and Node.js

特点

​ 1、支持数字,大数,复数,分数,单位,字符串,数组和矩阵。
​ 2、与JavaScript的内置Math库兼容。
​ 3、包含一个灵活的表达式解析器。
​ 4、进行符号计算。
​ 5、带有大量内置函数和常量。
​ 6、也可以用作命令行应用程序。
​ 7、在任何JavaScript引擎上运行。
​ 8、很容易扩展。
​ 9、开源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// functions and constants
math.round(math.e, 3) // 2.718
math.atan2(3, -3) / math.pi // 0.75
math.log(10000, 10) // 4
math.sqrt(-4) // 2i
math.derivative('x^2 + x', 'x') // 2*x+1
math.pow([[-1, 2], [3, 1]], 2)
// [[7, 0], [0, 7]]

// expressions
math.eval('1.2 * (2 + 4.5)') // 7.8
math.eval('12.7 cm to inch') // 5 inch
math.eval('sin(45 deg) ^ 2') // 0.5
math.eval('9 / 3 + 2i') // 3 + 2i
math.eval('det([-1, 2; 3, 1])') // -7

// chaining
math.chain(3)
.add(4)
.multiply(2)
.done() // 14

具体使用详见官网,话说回来我是这样使用的。

1
2
3
4
5
6
// 设置math参数 
math.config({
number: 'BigNumber'
});
let formulaStr = "0.1+0.2"
math.format(math.evaluate(formulaStr)) // 0.3
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

给阿姨来一杯卡普基诺~

支付宝
微信