安装 {#%E5%AE%89%E8%A3%85}
npm install bignumber.js
or
yarn add bignumber.js
静态方法 {#%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95}
静态方法调用后一般返回 BigNumber 实例
config {#config}
给构造函数设置参数
DECIMAL_PLACES {#decimal_places}
设置小数位数
BigNumber.config({ DECIMAL_PLACES: 4 })
BigNumber.random().toNumber() // 0.7793
sum {#sum}
计算传入的参数和,参数类型可以是 String,Number
// 两数之和
var x = BigNumber.sum('11', 23)
x.toNumber() // 34
`// 多个参数
arr = [2, new BigNumber(14), '15.9999', 12]
var y = BigNumber.sum(...arr)
y.toString() // '43.9999'
`
clone {#clone}
生成 bignumber 构造函数
var X = BigNumber.clone()
var y = new X()
y // bignumber实例
isBigNumber {#isbignumber}
判断是否是 bignumber 实例,通过 clone 的构造函数生成的实例仍然是 bignumber 实例,但是原型与 BigNumber 原型不同
var y = new BigNumber(2)
BigNumber.isBigNumber(y) // true
y instanceof BigNumber // true
`var BN = BigNumber.clone()
z = new BN(x)
z instanceof BigNumber // false
BigNumber.isBigNumber(z) // true
`
maximum,minimum {#maximum%2Cminimum}
求最大值,简写 max,min
var x = [2222, 3333, '4444']
BigNumber.max(...x).toNumber() // 4444
BigNumber.min(...x).toNumber() // 2222
random {#random}
生成伪随机数,传入参数决定小数位数
BigNumber.random().toNumber() // 0.1501651215311695
BigNumber.random(3).toNumber() // 0.150
实例方法 {#%E5%AE%9E%E4%BE%8B%E6%96%B9%E6%B3%95}
negated {#negated}
相反数
var x = new BigNumber(1.8)
x.negated() // -1.8
absoluteValue(abs) {#absolutevalue(abs)}
绝对值
var x = new BigNumber(-0.01)
x.abs().toNumber() // 0.01
comparedTo {#comparedto}
比较两数,返回值: 1: 大于 -1:小于 0:等于 null:比较值出现 NaN
var x = new BigNumber(Infinity)
var y = new BigNumber(5)
var z = new BigNumber(5)
x.comparedTo(y) // 1
y.comparedTo(x) // -1
y.comparedTo(z) // 0
y.comparedTo(NaN) // null
decimalPlaces(dp) {#decimalplaces(dp)}
确定小数位数
var x = new BigNumber(1234.5678912345)
var y = new BigNumber(1234.56)
x.dp(2).toNumber() // 1234.56
y.dp(10).toNumber() // 1234.56
plus {#plus}
加法运算
0.1 + 0.2 // 0.30000000000000004
var x = new BigNumber(0.1)
x.plus(0.2).toNumber() // 0.3
minus {#minus}
减法运算
0.3 - 0.1 // 0.19999999999999998
var x = new BigNumber(0.3)
x.minus(0.1) // 0.2
multipliedBy(times) {#multipliedby(times)}
乘法运算
0.6 * 3 // 1.7999999999999998
var x = new BigNumber(0.6)
x.times(3) // 1.8
dividedBy(div) {#dividedby(div)}
除法运算
var x = new BigNumber(300)
x.div(3).toNumber() // 100
x.div(7).dp(3).toNumber() // 42.857
dividedToIntegerBy(idiv) {#dividedtointegerby(idiv)}
除法运算,返回整数
var x = new BigNumber(5)
x.idiv(3).toNumber() // 1
x.idiv(0.7).toNumber() // 7
modulo(mod) {#modulo(mod)}
取余
1 % 0.9 // 0.09999999999999998
var x = new BigNumber(1)
x.mod(0.9).toNumber() // 0.1
exponentiatedBy(pow) {#exponentiatedby(pow)}
幂运算
Math.pow(0.7, 2) // 0.48999999999999994
var x = BigNumber(0.7)
x.pow(2).toNumber() // 0.49
integerValue {#integervalue}
取整,参数取值参考 Properties
var x = new BigNumber(123.456)
x.integerValue().toNumber() // 123
x.integerValue(BigNumber.ROUND_CEIL).toNumber() // 124
isEqualTo(eq) {#isequalto(eq)}
比较两数是否相等,NaN 不等于 NaN
0 === 1e-324 // js中
var x = new BigNumber(0)
x.eq('1e-324') // false
`var y = new BigNumber(NaN)
y.eq(NaN) // false
`
isFinite {#isfinite}
判断数字是否有效
var x = new BigNumber(1)
x.isFinite() // true
var y = new BigNumber(Infinity)
y.isFinite() // false
`var z = new BigNumber(NaN)
z.isFinite() // false
`
isGreaterThan(gt) {#isgreaterthan(gt)}
0.1 > 0.3 - 0.2 // true
var x = new BigNumber(0.1)
x.gt(BigNumber(0.3).minus(0.2)) // false
isGreaterThanOrEqualTo(gte) {#isgreaterthanorequalto(gte)}
判断是否大于等于某数,用法同 isGreaterThan
isLessThan(lt) {#islessthan(lt)}
判断是否小于某数,用法同 isGreaterThan
isLessThanOrEqualTo(lte) {#islessthanorequalto(lte)}
判断是否小于等于某数,用法同 isGreaterThan
isNaN {#isnan}
判断是否是 NaN
var x = new BigNumber(NaN)
x.isNaN() // true
`var y = new BigNumber(Infinity)
y.isNaN() // false
`
isPositive {#ispositive}
判断是否是正数
var x = new BigNumber(-0)
x.isPositive() // false
isNegative {#isnegative}
判断是否是负数,用法同 isPositive
isZero {#iszero}
判断是否是 0 或者-0
var x = new BigNumber(-0)
x.isZero() // true
toFixed {#tofixed}
控制小数位数,不够后面补 0
var x = 3.456
var y = new BigNumber(x)
x.toFixed().toNumber() // 3
y.toFixed().toNumber() // 3.456
y.toFixed(0).toNumber() // 3
y.toFixed(2).toNumber() // 3.46
y.toFixed(5).toNumber() // 3.45600
toNumber {#tonumber}
转 Number
toString {#tostring}
转 String