BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Math.js:多用途的JavaScript数学库

| 作者 Roopesh Shenoy 关注 0 他的粉丝 ,译者 马连浩 关注 0 他的粉丝 发布于 2014年1月27日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Math.js是一款开源的JavaScript和Node.js数学库,用于处理数字、大数、复数、单位和矩阵。它还有一个灵活的表达式解析器。为了解更多信息,InfoQ联系了该项目的创始人Jos De Jong。

Jos 解释了项目背后的动机——

对于JavaScript,我们有很好的库来处理矩阵、复数和统计等计算。欠缺的是用于高级数学计算的集成解决方案。大多数现有的库支持链式API,它们使用起来很直观,但只接受库本身已知的数据类型。因此,整合时存在的问题 是:矩阵库不能处理复数,反之亦然,你无法将它们合并起来。math.js的API和JavaScript的Math对象和内置操作符的API是相同的,都是支持各种输入类型的静态函数。 Math.js对该API进行了扩展,为高级数据类型、函数和常数提供了支持。

我希望math.js能使应用程序开发中的数学处理变得简单,并且更为有趣,希望还能帮助弥合开发者的世界与学术世界直接的鸿沟。

Math.js 有三种使用方式——

  1. 用静态函数和常数(就像JavaScript的Math对象)
    math.add(2, 3)math.add(2, 3);  // 5 
    math.sqrt(-4);                      // 2i 
    math.pow([[-1, 2], [3, 1]], 2);     // [[7, 0], [0, 7]]
    
  2. 对字符串表达式进行求值运算
    math.eval('1.2 * (2 + 4.5)'); //7.8
    math.eval('5.08 cm to inch'); //2 inch 
  3. 使用链式操作
    math.select(3)
        .add(4)
        .multiply(2)
        .done();      //14
    

math.js 网站有几个示例,文档中也有。

Jos希望在几个月内发布第一个稳定版本1.0。

版本1.0还剩下的工作是写一个参考文档,代码的单元测试覆盖率达到100%,解决 一些不完善的地方。

到版本1.0发布时,API也将稳定下来,之后我们的焦点可能会转移到优化上。Jos提出了可能会带来潜在性能改进的几个方向,如使用类型化数组、并行化和asm.js

Jos为什么选择了JavaScript,而没有选择像已有诸如NumPi/SCIPI等库的Python这样的语言,原因是——

最近几年,我们已看到了云计算和Web应用程序的发展浪潮,而且我自己也完全融入其中了。浏览器和JavaScript引擎也正在变得越来越快。几年前,我们就可以使用node.js运行JavaScript服务器端。这开拓了许多新的可能性,并导致了JavaScript的生态系统及其受欢迎程度的爆炸性增长。看起来JavaScript正在成为应用最普遍的语言。尽管JavaScript远不完美,但我非常喜欢JavaScript及其社区。

目前已经有几个使用math.js的最终用户应用。Jos自己的项目mathnotepad也是基于math.js的,目前还处于早期开发阶段。numerics这款流行的计算器项目也用到了Math.js。

如果想使用Math.js,可以查看文档

查看英文原文:Math.js: Versatile Math Library For JavaScript


感谢臧秀涛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

math.js by 汀 雨

不错

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT