最近为期权开发一些基本技术指标,用到一些C++的数学库,刚好看到JavaScript的math.js库,这里对math.js做一下简单介绍。

一、什么是math.js

math.js是一个广泛应用于JavaScript 和 Node.js的数学库,它的特点是灵活表达式解析器,支持符号计算,内置大量函数与常量,并提供集成解决方案来处理不同的数据类型,如数字,大数字,复数,分数,单位和矩阵。
math.js可以在浏览器、node.js 和任何JavaScript引擎中使用。[下载地址:http://mathjs.org/download.html]

二、Features

1、支持数字,大数,复数,分数,单位,字符串,数组和矩阵。

2、与JavaScript的内置数学库兼容。

3、包含一个灵活的表达式解析器

4、符号计算。

5、内置大量的函数和常量。

6、没有依赖,运行在任何JavaScript引擎。

7、可以用作命令行应用程序。

8、容易扩展

9、开源

三、用法

math.js支持各种软件包管理器(ex:npm & bower)安装,也可以从网站http://mathjs.org/download.html下载库。
通过npm安装:

pm install mathjs

通过bower安装:

bower install mathjs

math.js 可以从cdnjs 下载或者链接:

https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.16.0/math.min.js

math.js可以类似于JavaScript的内置Math库。 此外,math.js可以使用eval表达式并支持链接操作。一下是math.js三种使用方式:

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

math.round(math.e, 3);            // 2.718math.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 + 1math.atan2(3, -3) / math.pi;      // 0.75

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

math.eval('12 / (2.3 + 0.7)');    // 4math.eval('12.7 cm to inch');     // 5 inchmath.eval('sin(45 deg) ^ 2');     // 0.5math.eval('9 / 3 + 2i');          // 3 + 2imath.eval('det([-1, 2; 3, 1])');  // -7

3、链式操作

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

4、矩阵操作

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

注:大多数math.js函数,都需要valueof()或者done()函数来真正地获取操作的值,如上面代码所示。

5、BigNumbers

var b = math.complex('4-2i');b.re = 5;console.log(b.valueof()); // 5-2i

math.js对BigNumbers的支持,拥有任意精度的数值,并且是具有实部和虚部的复数。

math.js文档地址:http://mathjs.org/docs/index.html

math.js:灵活强大的JavaScript数学库相关推荐

  1. 【JS】详解JS精度丢失原理以及业务中价格计算引入数学库 Math.js的使用场景

    一.JS为什么会出现精度丢失问题 1.JS基本数据类型 Number 在内存中是怎么存储的? JS中的Number类型使用的是双精度浮点型,也就是其他语言中的double类型.在计算机内存中,单精度数 ...

  2. 2019年11个值得研究的Javascript机器学习库

    https://www.toutiao.com/a6669159846014616071/ 虽然大部分机器学习都是用python这样的语言完成的,但在Javascript生态系统中,其前端和后端社区都 ...

  3. math.sqrt_Math.SQRT1_2属性与JavaScript中的示例

    math.sqrt JavaScript | Math.SQRT1_2属性 (JavaScript | Math.SQRT1_2 Property) Math.SQRT1_2 is a propert ...

  4. js中的new file_深受 Pandas 启发的 JavaScript 开源库 — Danfo.js 现已推出!

    特邀博文 / 独立研究员 Rising Odegua 与来自 Data Science Nigeria 的 Stephen Oni Danfo.js 是个 JavaScript 开源库,提供了高性能. ...

  5. 美观又实用,10 款强大的开源 Javascript 图表库

    2019独角兽企业重金招聘Python工程师标准>>> 随着发展,现代 Web 设计在改善体验和功能的同时,对于美观的追求也越来越高,可视化.交互式.动态等元素和效果似乎已成为标配. ...

  6. 功能强大的JavaScript 拖拽库 SortableJS

    功能强大的JavaScript 拖拽库 SortableJS 官网:http://www.sortablejs.com/ 示例: 配置项: var sortable = new Sortable(el ...

  7. Math.js库的使用

    Math.js库的使用 可以使用npm或Bower来安装Math.js,直接从Web网站下载,或者通过内容发布网络(CDN)来方法.它可以用于浏览器中,或者用于Node应用程序中.它提供了一组函数来执 ...

  8. 前端绘图开源组件_美观又实用,10款强大的开源Javascript图表库

    随着发展,现代 Web 设计在改善体验和功能的同时,对于美观的追求也越来越高,可视化.交互式.动态等元素和效果似乎已成为标配. 以下是为开发者推荐的 10 款开源 Javascript 图表库,可以帮 ...

  9. Nexus.js介绍:一个多线程的JavaScript运行库

    首先,如果你不熟悉这个项目,建议先阅读之前写的一系列文章.如果你不想阅读这些,不用担心.这里面也会涉及到那些内容. 现在,让我们开始吧. 去年,我开始实现Nexus.js,这是一个基于Webkit/J ...

最新文章

  1. Spring Boot如何优雅的校验参数
  2. bash之逻辑控制---for语句
  3. CentOs7中安装sonarQube服务系列------1.CentOS7中Docker的安装
  4. 8.图片组件和动画效果--从零起步实现基于Html5的WEB设计器Jquery插件(含源码)...
  5. Eurek Ribbon Feign常见问题及解决
  6. Android高级开发面试题目,再也不用担心不能升职加薪了。
  7. poj 2392 Space Elevator 二进制拆包多重背包
  8. PHP实现文件上传,下载,批量下载
  9. mysql如何从两个表取出内容_如何从mysql中的两个表中获取数据?
  10. Soft Actor Critic算法论文公式详解
  11. PHP实现图片转字符画
  12. IOS开发学习基于swift语言
  13. 数据仓库上云那些事儿
  14. Qt QTouchEvent 多点触控
  15. 根据两点的经纬度求方位角和距离,等
  16. 观察containerd-shim-runc-v2进程与容器里的1号进程
  17. 第十二届蓝桥杯大赛软件赛省赛 Python 大学 A 组 部分试题与解析
  18. 微信小程序后台销毁时间 演变和总结(热启动时间限制)
  19. 《网格交易法数学+传统智慧战胜华尔街》内容介绍及PDF下载
  20. 10.网桥是什么?网桥和路由器及交换机的区别?以太网和令牌环网,nat,查公网ip等

热门文章

  1. 海华模组:WIFI、BT、SoC模组列表
  2. HALCON示例程序train_characters_ocr.hdev使用SVM分类器训练字体
  3. 浅谈OpenCV[轉]
  4. 学习笔记(24):Python网络编程并发编程-进程与线程的区别
  5. C# —— 序列化与反序列化
  6. python时间格式_python 格式化日期
  7. 将一句话的单词进行倒置,标点符号不倒换。比如一句话:“i love you.”倒换后变为you. love i
  8. jq js json 转字符串_JS中JSON对象和String之间的互转及处理技巧
  9. oracle数据库主键自增序列_Oracle数据库序列详解
  10. [BZOJ2725/Violet 6]故乡的梦