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
  • 复制toExponentialtoFixedtoPrecisiontoStringJavaScript的数字类型的方法
  • 包含toFraction和正确舍入的squareRoot方法
  • 支持加密安全的伪随机数生成
  • 没有依赖关系
  • 广泛的平台兼容性:仅使用JavaScript 1.5(ECMAScript 3)功能
  • 全面的文档和测试集

用法

加法 plus

  • 语法.plus(n [, base])
    • 参数值
      • n (必需): number|string|BigNumber 参与计算的数字
      • base: number 进制 (默认为十进制)
    • 返回值
      BigNumber
  • 举例 ```javascript
  1. 0.1 + 0.2 // 0.30000000000000004
  2. x = new BigNumber(0.1)
  3. y = x.plus(0.2) // ‘0.3’
  4. BigNumber(0.7).plus(x).plus(y) // ‘1’
  5. x.plus(‘0.1’, 8) // ‘0.225’ ```

减法 minus

  • 语法.minus(n [, base])
    • 参数值
      • n (必需): number|string|BigNumber 参与计算的数字
      • base: number 进制 (默认为十进制)
    • 返回值
      • BigNumber
  • 举例 ```javascript
  1. 0.3 - 0.1 // 0.19999999999999998
  2. x = new BigNumber(0.3)
  3. x.minus(0.1) // ‘0.2’
  4. x.minus(0.6, 20) // ‘0’ ```

乘法 multipliedBy

  • 语法.times(n [, base])
    • 参数值
      • n (必需): number|string|BigNumber 参与计算的数字
      • base: number 进制 (默认为十进制)
    • 返回值
      • BigNumber
  • 举例 ```javascript
  1. 0.6 * 3 // 1.7999999999999998
  2. x = new BigNumber(0.6)
  3. y = x.multipliedBy(3) // ‘1.8’
  4. BigNumber(‘7e+500’).times(y) // ‘1.26e+501’
  5. x.multipliedBy(‘-a’, 16) // ‘-6’ ```

除法 dividedBy

  • 语法.div(n [, base])
    • 参数值
      • n (必需): number|string|BigNumber 参与计算的数字
      • base: number 进制 (默认为十进制)
    • 返回值
      • BigNumber
  • 举例 ```javascript
  1. x = new BigNumbejr(113)
  2. x.dividedBy(y) // ‘3.14159292035398230088’
  3. x.div(5) // ‘71’
  4. x.div(47, 16) // ‘5’ ```

注意

结果转换

  1. x = new BigNumber(255.5)
  2. x.toExponential(5) // "2.55500e+2"
  3. x.toFixed(5) // "255.50000"
  4. x.toPrecision(5) // "255.50"
  5. x.toNumber() // 255.5