BigNumber.js数值计算-解决精度问题

Posted JackieDYH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BigNumber.js数值计算-解决精度问题相关的知识,希望对你有一定的参考价值。

BigNumber.js-文档

特征

  1. 整数和小数
  2. 简单的API,但功能齐全
  3. 比Java的BigDecimal的javascript版本更快,更小,甚至更容易使用
  4. 缩小并压缩8 KB
  5. 复制toExponentialtoFixedtoPrecisiontoStringJavaScript的数字类型的方法
  6. 包含toFraction和正确舍入的squareRoot方法
  7. 支持加密安全的伪随机数生成
  8. 没有依赖关系
  9. 广泛的平台兼容性:仅使用JavaScript 1.5(ECMAScript 3)功能
  10. 全面的文档和测试集

用法

加法 plus

  • 语法.plus(n [, base])
  • 参数值
  • n (必需): number|string|BigNumber 参与计算的数字
  • base: number 进制 (默认为十进制)
  • 返回值
    BigNumber
  • 举例
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
  • 举例
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
  • 举例
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
  • 举例
1. x = new BigNumbejr(113)
3. x.dividedBy(y)                  // '3.14159292035398230088'
4. x.div(5)                        // '71'
5. 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

 

 

 

以上是关于BigNumber.js数值计算-解决精度问题的主要内容,如果未能解决你的问题,请参考以下文章

js精度计算

星云链智能合约开发:智能合约中调用内置库

解决浮点型数值计算精度丢失的一种实现

require('bignumber.js') 在松露测试中失败,npm ls -g 显示它已安装(Windows)

js 小数加法的精度问题解决(0.1+0.2 != 0.3,怎么解决?)

Java数值计算精度舍入于溢出问题