我们可能在平时运算过程中碰到以下类似情况:
0.1 + 0.2 结果是 0.30000000000000004
0.0003 * 10 结果是 0.0029999999999999996
0.003 / 10 结果是 0.00030000000000000003
原因在于:在计算机内部,使用二进制浮点数并不能准确地表示像 0.1, 0.2 或 0.3 这样的数字,所以当编码或解释代码时,像“0.1”其实已经舍入为与0.1最接近的数字,即使在计算发生之前已经会导致小的舍入误差(是的,所有语言都是这样)
如果不想看到这些额外的小数位数:在显示时,我们可以用toFixed()或toPrecision() 之类将结果格式化为固定的小数位数
toFixed(num)可把 Number 四舍五入为指定小数位数的数字,结果是个字符串
(512).toFixed(4);//"512.0000"
(512.345).toFixed(2);//"512.35"
toPrecision(num)以指定的精度返回该数值对象的字符串表示
(5123456).toPrecision(5);//"5.1235e+6"
(512).toPrecision(6);//"512.000"
既然这里提及到toFixed()和toPrecision(),那么顺带说一下toString().
toString() 方法返回指定 Number 对象的字符串表示形式。
var count = 10;
console.log(count.toString()); // 输出 '10'
console.log((17).toString()); // 输出 '17'
console.log((17.2).toString()); // 输出 '17.2'
var x = 6;
console.log(x.toString(2)); // 输出 '110'
console.log((254).toString(16)); // 输出 'fe'
console.log((-10).toString(2)); // 输出 '-1010'
console.log((-0xff).toString(2)); // 输出 '-11111111'