数学计算插件

title: 数学计算插件 id: e23f34fe25eb7d2c322f40cc05657d80 tags: [] date: 2000/01/01 00:00:00 updated: 2024/01/13 21:10:53 isPublic: true --#|[分隔]|#--

数学计算插件

js一直存在一个 0.1 + 0.2 !== 0.3 的问题。

官方解答是类似js在计算时,会把数字转为二进制进行计算,而一些小数转为二进制时,是一个无尽的类似「00100000100...」的值,真正计算后再转为十进制,就会失去精度的一个说法。

反正结果就是,js不能用来直接计算小数。

所以下面这几个插件,给经济金融股票相关的页面开发者省太多头发了。

decimal.js、bignumber.js和big.js

这三个插件是同一个作者开发的,所以使用的逻辑几乎一样,区别就是适用的方面和API数量不同。

  • decimal.js:超出js安全数值范围会失去精度,大多数时适用

  • bignumber.js:超出js安全数值范围也不会失去精度,适合财务计算时使用

  • big.js:类似bignumber.js,但API方法数量比较少

这几个插件,加减乘除需要调用不同方法,虽然主要使用 加减乘除,但这个插件内部的方法还是挺多的。

安装三者的方法

三个方法,使用其中一个即可,正常可以使用decimal.js,但当进行财务计算、web3区块链、虚拟币相关时,可以使用bignumber.jsbig.js

引入

使用举例

使用时,建议传数字字符串,避免当数字过大或者过小时,超过js数字安全范围,值的某些位数被替换为0。

mathjs(不推荐)

这个插件体积比较大,查看过压缩版的js,体积还有500多k,建议使用另一 decimal.js,体积只有32k。

官方教程说,可以不进行初始化,直接使用evaluate方法,比如evaluate('0.1 + 0.7')的方式使用,但我实测,发现无法解决小数失去精度的问题,所以还是需要初始化一下。

github:https://github.com/josdejong/mathjs

使用编译工具

安装插件

初始化和配置插件

使用方法

使用静态HTML

使用静态html,就不能使用npm,也不能使用es6语法,那么就引入插件js。

下载此插件js:https://unpkg.com/mathjs/dist/math.min.js,然后引入:

初始化插件,可以暴露出一个方法到window上,或者其他调用方式都可以

Last updated

Was this helpful?