https://www.npmjs.com/package/bignumber.js
https://github.com/MikeMcl/bignumber.js
文档地址:https://mikemcl.github.io/bignumber.js/
一个JavaScript库,用于任意精度的十进制和非十进制算术。
特征
- 整数和小数
- 简单的API,但功能齐全
- 比Java的BigDecimal的JavaScript版本更快,更小,甚至更容易使用
- 缩小并压缩8 KB
- 复制
toExponential
,toFixed
,toPrecision
和toString
JavaScript的数字类型的方法 - 包含
toFraction
和正确舍入的squareRoot
方法 - 支持加密安全的伪随机数生成
- 没有依赖关系
- 广泛的平台兼容性:仅使用JavaScript 1.5(ECMAScript 3)功能
- 全面的文档和测试集
用法
加法 plus
- 语法
.plus(n [, base])
- 参数值
n
(必需):number|string|BigNumber
参与计算的数字base
:number
进制 (默认为十进制)
- 返回值
BigNumber
- 参数值
- 举例 ```javascript
- 0.1 + 0.2 // 0.30000000000000004
- x = new BigNumber(0.1)
- y = x.plus(0.2) // ‘0.3’
- BigNumber(0.7).plus(x).plus(y) // ‘1’
- x.plus(‘0.1’, 8) // ‘0.225’ ```
减法 minus
- 语法
.minus(n [, base])
- 参数值
n
(必需):number|string|BigNumber
参与计算的数字base
:number
进制 (默认为十进制)
- 返回值
BigNumber
- 参数值
- 举例 ```javascript
- 0.3 - 0.1 // 0.19999999999999998
- x = new BigNumber(0.3)
- x.minus(0.1) // ‘0.2’
- x.minus(0.6, 20) // ‘0’ ```
乘法 multipliedBy
- 语法
.times(n [, base])
- 参数值
n
(必需):number|string|BigNumber
参与计算的数字base
:number
进制 (默认为十进制)
- 返回值
BigNumber
- 参数值
- 举例 ```javascript
- 0.6 * 3 // 1.7999999999999998
- x = new BigNumber(0.6)
- y = x.multipliedBy(3) // ‘1.8’
- BigNumber(‘7e+500’).times(y) // ‘1.26e+501’
- x.multipliedBy(‘-a’, 16) // ‘-6’ ```
除法 dividedBy
- 语法
.div(n [, base])
- 参数值
n
(必需):number|string|BigNumber
参与计算的数字base
:number
进制 (默认为十进制)
- 返回值
BigNumber
- 参数值
- 举例 ```javascript
- x = new BigNumbejr(113)
- x.dividedBy(y) // ‘3.14159292035398230088’
- x.div(5) // ‘71’
- x.div(47, 16) // ‘5’ ```
注意
结果转换
x = new BigNumber(255.5)
x.toExponential(5) // "2.55500e+2"
x.toFixed(5) // "255.50000"
x.toPrecision(5) // "255.50"
x.toNumber() // 255.5