JS中只有一种数字格式即Number,遵循IEEE 754标准,在我们计算过程中会发现诸如
0.1+0.2 = 0.30000000000000004
的奇怪现象,这是因为计算机中数值精度是有范围的,原理请参照JavaScript 浮点数陷阱及解法,
如果链接跳转有问题可以直接查看下列解决方法。
解决方法
通过Number对象上面的两个方法可以取得一个指定位数的小数
1,toPrecision()
方法以指定的精度返回该数值对象的字符串表示。
语法:
numObj.toPrecision(precision)
precision 可选。一个用来指定有效数个数的整数。
2,toFixed()
方法使用定点表示法来格式化一个数值。
语法:
numObj.toFixed(digits)
digits
小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。
let num = 1.2345
console.log(num.toFixed(3))
//1.234
console.log(num.toPrecision(4))
//1.234
不足
我们调用上面两个方法时,不是单纯的截取指定位数,也不是进行数学保留有效小数式的四舍五入,更不是网上大部分都在说的”银行家舍入法“,相关计算规则参考ECMA toFixed计算规则
参考资料
MDN文档