原文网址:mathjs--使用/实例_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍JavaScript的数学计算库:mathjs。
官网
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获取操作值的方法
- valueof()
- done()
- format()
- ...
用静态函数和常数(就像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
版权归原作者 IT利刃出鞘 所有, 如有侵权,请联系我们删除。