mathjs--使用/实例

原文网址:mathjs--使用/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍JavaScript的数学计算库:mathjs。

官网

官网:https://mathjs.org/

中文官网:https://www.mathjs.cn/

github:https://github.com/josdejong/mathjs(Star数:12.4K)

npm地址:https://www.npmjs.com/package/mathjs

math.js特性

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

安装

浏览器

<script src="https://cdn.bootcdn.net/ajax/libs/mathjs/10.6.1/math.min.js"></script>

Node.js

npm install mathjs

实例

mathjs使用方式

mathjs获取操作值的方法

  1. valueof()
  2. done()
  3. format()
  4. ...

用静态函数和常数(就像JavaScript的Math对象)

math.round(math.e, 3);            // 2.718
math.add(2, 3);  // 5 
math.sqrt(-4);  // 2i 
math.pow([[-1, 2], [3, 1]],2);     // [[7, 0], [0, 7]]
math.derivative('x^2 + x', 'x');  // 2 * x + 1
math.atan2(3, -3) / math.pi;      // 0.75

对字符串表达式进行求值运算

math.eval('12 / (2.3 + 0.7)');    // 4
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

链式操作

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

矩阵操作

var n = math.matrix([[4,3,2], [6,6,8], [7,4,5]]);   
console.log(n.valueof()); // [[4,3,2],[6,6,8],[7,4,5]]

可以使用如下代码来创建一个用0填充的矩阵:

var z = math.zeros(2,2);  
console.log(z.valueof());   // [[0, 0], [0, 0]]

mathjs 大数

可以使用以下函数创建BigNumber bignumber:

math.bignumber('2.3e+500') // BigNumber, 2.3e+500

        大多数函数可以根据输入的类型确定输出的类型:作为输入的数字将返回数字作为输出,作为输入的BigNumber将返回BigNumber作为输出。无法确定来自输入的输出类型的函数(例如math.evaluate)使用默认数字类型number,可以在实例化math.js时对其进行配置。要在默认情况下配置使用BigNumbers而不是numbers ,请配置math.js如下:

math.config({
  number: 'BigNumber',      // 默认的数字类型:
                            // 'number' (默认), 'BigNumber', 或 'Fraction'

  precision: 64             // 大数的有效位数
})
// 使用 math
math.evaluate('0.1 + 0.2')  // BigNumber, 0.3

BigNumber的默认精度为64位数字,可以使用选项进行配置 precision.

示例

加减乘除

使用bignumber进行示例:

​math.add(math.bignumber(0.1), math.bignumber(0.2))) // 加法 BigNumber, 0.3
math.subtract(math.bignumber(1), math.bignumber(0.9))) // 减法 BigNumber, 0.1
math.multiply(math.bignumber(4.10), math.bignumber(100))) // 乘法 BigNumber, 0.1
math.ceil(math.bignumber(6.10)/ math.bignumber(0.1)));   //除法 向上取整 61
math.floor(math.bignumber(6.10)/ math.bignumber(0.1)));   //除法 向下取整 61
math.round(math.bignumber(6.10)/ math.bignumber(0.1)));   // 除法 四舍五入 61

其他方法

https://www.mathjs.cn/docs/index.html

其他网址

优秀的js拓展数学库math.js,解决精度问题_飞哥专栏的博客-CSDN博客_math.js

猜你喜欢

转载自blog.csdn.net/feiying0canglang/article/details/125117216