0.3000000000000004。不会精确等于0.3。
首先,十进制的0.1和0.2会被转换成二进制的,二进制浮点数表示法并不能精确的表示类似0.1这样的数值,因为浮点数在转化为二进制时,会出现无限循环
0.1 -> 0.0001 1001 1001 1001...(1100循环)
0.2 -> 0.0011 0011 0011 0011...(0011循环)
两者相加之后得到二进制为再转换为十进制,会产生误差。
num.toFixed(小数点位数)
先✖️10相加 再除10
可以使用toFixed方法,可把 Number 四舍五入为指定小数位数的数字。
var num = 5.56789;
var n=num.toFixed(2);
输出:
5.57