0.1+0.2===0.3为false的说明,下面是原因和解决方法。
因为计算机是二进制的,只能用0,1来表示数值,所以表示浮点数肯定是有误差的,下面我们来说明一下浮点数的别是过程。
文字描述该过程如下:将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘
以2,将得到的整数部分作为二进制表示的第2位;以此类推,直到小数部分为0。
特殊情况: 小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编
程语言中表示小数会出现误差的原因
下面我们具体计算一下0.7的小数表示过程
0.7 * 2 = 1.4 ——————- 1
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.1+0.2=0.300000000000004。为了达到正确的结果,我们可以用toFixed()来处理。
parseFloat(1.392143).toFixed(2)=1.39
toFixed()里面填写需要展示的小数位数就可以了。
网友评论