解决0.1 + 0.2 不等于 0.3的问题
方法一:同时扩大倍数再除以相同的倍数
0.1 +0.2
// 0.30000000000000004
(0.1 *10 + 0.2 *10) / 10
// 0.3
方法二:可以使用第三方js库,如big.js或bignumber.js,这些库可以处理任意精度的数值。
js 超过 Number 最大值的数怎么处理?
在 JavaScript 中,超过 Number.MAX_VALUE的数值被认为是 (正无穷大)。
例如使用big.js可以处理两个超过Number.MAX_VALUE的数相加:
// 运算
// const plus = Big(0.1).plus(0.2); // 加
// const minus = Big(0.3).minus(0.1); // 减
// const mul = Big(10.22).times(100); // 乘
// const div = Big(2.4).div(0.8); // 除
big.js使用方法
引入插件
import Big from 'big.js'
1. 创建Big number数据
const number = new Big(.1)
或者
const number = Big(.1)
2. 判断数据相等,比较值的大小
const number1 = new Big(.3)
const number2 = Big(.3)
number1.eq(number2) // true
number1.eq(.3) // true
number1.gt(number2) // false
若number1大于number2为true,否则为false
3. 加减法运算
const number1 = new Big(.3)
const number2 = number1.plus(.1) // 0.4
const number3 = number1.minus(.1) // 0.2
4. 乘除法运算
const number1 = new Big(.3)
number1.times(3) // 0.9
const number2 = new Big(.8)
number2.div(4) // 0.2
5. 将Big Number转换为字符串
const number = new Big(.3)
number.toExponential(3) // 3.00e-1
将number转换成科学计数法,小保留三位
number.toFixed(3) // '0.300' 转换成保留三位小数的字符串
number.toPrecision(3) // '0.300'
总位数保留三位,如果整数位是0,不算位数
6. 保留小数
Big(.3).round(3) // 保留三位小数,四舍五入