当前位置: 首页 > news >正文

Math.js 使用教程

Math.js是 JavaScript 生态里最强大、通用的数学计算库,核心解决原生Math功能弱、精度差、无表达式解析、不支持复数/矩阵/单位等痛点。


一、核心定位与优势

  • 兼容浏览器 & Node.js,无外部依赖
  • 支持:高精度数、复数、分数、单位、矩阵、符号计算
  • 内置表达式解析器(字符串公式直接算)
  • API 友好,兼容原生Math用法

二、安装与引入

1. npm(推荐)
npminstallmathjs
// 全量引入import{create,all}from'mathjs'constmath=create(all)// 或按需引入(更轻量)import{add,sqrt,evaluate}from'mathjs'// 纯 number 轻量版(无复数/高精度,性能高)import{add}from'mathjs/number'
2. 浏览器 CDN
<scriptsrc="https://cdn.jsdelivr.net/npm/mathjs/lib/browser/math.js"></script><script>console.log(math.add(2,3))// 5</script>

三、基础用法

1. 常用函数(对标原生 Math)
math.add(2,3)// 5 加法math.subtract(7,3)// 4 减math.multiply(2,8)// 16 乘math.divide(9,3)// 3 除math.pow(2,10)// 1024math.sqrt(-4)// 2i 复数支持math.sin(math.pi/2)// 1math.log(1000,10)// 3math.round(math.e,3)// 2.718
2. 表达式解析(最强特性)
math.evaluate('sqrt(3^2 + 4^2)')// 5math.evaluate('1.2 * (2 + 4.5)')// 7.8math.evaluate('12.7 cm to inch')// 5 inch(单位换算)math.evaluate('sin(45 deg) ^ 2')// 0.5math.evaluate('det([-1,2;3,1])')// -7(矩阵行列式)
3. 链式调用
math.chain(3).add(4)// 7.multiply(2)// 14.done()// 14

四、高级数据类型

1. 复数
constc1=math.complex(2,3)// 2 + 3iconstc2=math.complex('1-2i')math.add(c1,c2)// 3 + i
2. 分数(避免浮点误差)
constf1=math.fraction(1,3)constf2=math.fraction(1,6)math.add(f1,f2)// 1/2
3. 矩阵 / 线性代数
constA=math.matrix([[1,2],[3,4]])math.det(A)// -2(行列式)math.inv(A)// 逆矩阵math.multiply(A,A)// 矩阵平方
4. 单位换算
math.evaluate('1 meter to inch')// 39.37...math.evaluate('1 kg to lb')// 2.204...
5. 符号计算(求导、化简)
math.derivative('x^2 + x','x')// 2x + 1math.simplify('x + x + x')// 3x

五、精度控制(BigNumber)

解决 JS 浮点数精度问题(如0.1+0.2≠0.3):

constmath=create(all,{number:'BigNumber'// 默认用高精度})math.add(0.1,0.2)// 0.3(精确)

六、典型应用场景

  • 前端计算器、公式编辑器
  • 科学计算、数据可视化、图表
  • 单位换算、几何/物理计算
  • 低代码平台的动态公式引擎
  • 教育类数学工具

七、与原生 Math 对比

特性原生 JS MathMath.js
精度双精度浮点BigNumber/高精度
数据类型仅数字复数、分数、矩阵、单位
表达式解析✅ 字符串直接解析
符号计算✅ 求导、化简
线性代数✅ 矩阵、行列式、逆矩阵
单位换算✅ 内置大量单位

八、快速上手示例(完整)

import{create,all}from'mathjs'constmath=create(all)// 1. 基础计算console.log(math.evaluate('sqrt(3^2 + 4^2)'))// 5// 2. 复数console.log(math.sqrt(-4).toString())// 2i// 3. 矩阵constm=math.matrix([[1,2],[3,4]])console.log(math.det(m))// -2// 4. 符号求导console.log(math.derivative('x^3','x').toString())// 3x^2
http://www.jsqmd.com/news/598891/

相关文章:

  • 五相电机双闭环矢量控制模型:原理说明、仿真波形及完整版Simulink模型
  • Windows下5种端口连通性测试方法实测对比(附详细命令)
  • Ostrakon-VL-8B多模态运维监控实战:智能日志分析与故障预警
  • e1547:重新定义e621浏览体验的现代化客户端解决方案
  • Golang笔记1-变量与类型
  • 3步优化鸣潮游戏体验:面向全层级玩家的WaveTools工具箱使用指南
  • VI、 UI 和 UX 设计区别,详细介绍
  • # 发散创新:基于Python与OpenCV的手势识别系统实战详解在人工智能快速发
  • 终极指南:使用payload-dumper-go快速提取Android OTA更新包
  • 【VBA】【EXCEL】分类汇总
  • 篡改猴Tampermonkey失效解决方案
  • 单目相机实战:用OpenCV的solvePnP实现物体位姿估计(附Python代码)
  • C++ STL 核心:string 从入门到精通(面试+源码+OJ实战)
  • 100个服装款的PPT商品详情页,我用这三步1分钟搞定
  • 常见网络连接问题分类
  • 基于非对称纳什谈判理论的微网电能共享运行优化策略:合作博弈与P2P交易完美复现的完美电网技术文献实践
  • 2026年二手化工设备二手制药设备厂家最新推荐:二手蒸发器回收、二手离心机回收、二手干燥机回收、二手混合机回收、二手反应釜回收厂家选择指南 - 海棠依旧大
  • 游戏开发中的“场”魔法:用梯度、散度模拟水流、烟雾与热量扩散
  • ParaView实战:5分钟搞定热流图单元格体积计算(附Python脚本)
  • 4月3日
  • C++ 硬件特征自适应分发:利用 C++ 特性实现对不同 CPU 指令集(AVX2/AVX-512)的运行时代码路径最优选择
  • **发散创新:基于C语言实现的实时内核任务调度机制设计与实践**在嵌入式系统开发中,**实时内核(Real-TimeK
  • NCM格式自由转换:用ncmdump突破网易云音乐加密限制
  • 无氟空调蜗轮塑料模设计【说明书+solidworks三维+CAD图纸+开提报告+任务书+数控编程及加工录像】
  • 回溯算法解组合总和问题(Python,Java,C语言)
  • 股票相似K线匹配的Python实现:Tushare数据+皮尔逊相关系数全解析
  • PHP脚本设置无限执行时间的四种方法
  • 通俗易懂理解RAG
  • 超链接(a 标签)课堂笔记
  • C++20 协同调度原语:利用 std::atomic::wait/notify 实现低功耗自旋锁在高并发下的快速响应协议