数学计算插件
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方法数量比较少
这几个插件,加减乘除需要调用不同方法,虽然主要使用 加减乘除,但这个插件内部的方法还是挺多的。
官方地址Github(可下载单文件 js 来静态使用)
安装三者的方法
三个方法,使用其中一个即可,正常可以使用decimal.js,但当进行财务计算、web3区块链、虚拟币相关时,可以使用bignumber.js或big.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?