mathJS应用

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-21 10:58   16   0

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

mathjs

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

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

特点

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

// 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

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

// 设置math参数 
math.config({
    number: 'BigNumber'
 });
let formulaStr = "0.1+0.2"
math.format(math.evaluate(formulaStr))  // 0.3

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP