0.1+0.2!=0.3

浏览到一个网站:https://0.30000000000000004.com/
记录了各个语言计算0.1+0.2的值。

为啥0.1+0.2!=0.3呢?

在当前进制数值系统下,分子为1,若分母为当前进制数值的质因子时,该分数可以被除净(除不净表示无法被精确表达)。以十进制为例,它的质因子为2、5,因此1/2、1/4、1/5、1/8和1/10都能被除干净,相反,1/3、1/6 和 1/结果都是循环小数。

那么二进制时,质因子为2,所以1/2、1/4 和 1/8都可以被精确表示,1/5 或者 1/10就变成了循环小数,那么0.2与0.1成了循环小数。

而计算机天生只能存储整数,它只能用某种方法来表示小数,例如使用浮点数,可见:0.1+0.2!=0.3。