mathJS应用

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

 

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

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

特点

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

 1 // functions and constants
 2 math.round(math.e, 3)            // 2.718
 3 math.atan2(3, -3) / math.pi      // 0.75
 4 math.log(10000, 10)              // 4
 5 math.sqrt(-4)                    // 2i
 6 math.derivative('x^2 + x', 'x')  // 2*x+1
 7 math.pow([[-1, 2], [3, 1]], 2)
 8      // [[7, 0], [0, 7]]
 9  
10 // expressions
11 math.eval('1.2 * (2 + 4.5)')     // 7.8
12 math.eval('12.7 cm to inch')     // 5 inch
13 math.eval('sin(45 deg) ^ 2')     // 0.5
14 math.eval('9 / 3 + 2i')          // 3 + 2i
15 math.eval('det([-1, 2; 3, 1])')  // -7
16  
17 // chaining
18 math.chain(3)
19     .add(4)
20     .multiply(2)
21     .done() // 14

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

1 // 设置math参数 
2 math.config({
3     number: 'BigNumber'
4  });
5 let formulaStr = "0.1+0.2"
6 math.format(math.evaluate(formulaStr))  // 0.3
7  

 

posted @ 2021-11-14 11:04  aixuexi666888  阅读(322)  评论(0编辑  收藏  举报