JavaScript是2进制存储的,且存储长度是有限的
0.1+0.2
0.1 转换为二进制
0.1*2=0.2 0
0.2*2=0.4 0
0.4*2=0.8 0 --------
0.8*2=1.6 1
0.6*2=1.2 1
0.2*2=0.4 0 ------------
0.4*2=0.8 0
0.8*2=1.6 1
会得到一个无限循环小数 0.00 0110 0110 0110 0110 …… 二进制的科学计数法就是 1.1001*2^-4
0.2 转换为二进制
0.2*2=0.4 0
0.4*2=0.8 0
0.8*2=1.6 1
0.6*2=1.2 1
0.2*2=0.4 0
0.4*2=0.8 0
0.8*2=1.6 1
0.6*2=1.2 1
也会得到一个无限循环小数 0. 0011 0011 0011 0011 …… 二进制的科学计数法 1.1001*2^-3
两个值都是无限循环的,但是计算机存储数字的长度是有限的,所有会取一个近似值进行存储
计算机对两个数的计算结果为
0.30000000000000004
这个值明显是不行的
我们四舍五入取值
这里就可以得到0.3了,但是这样的话这个值是字符串
再对它进行类型转换
这样0.1+0.2 就可以等于 0.3 了