相当简单的问题QAQ

print(0.1+0.2==0.3)
结果为什么是False啊

浮点数只能是近似值,编程里相加和算数上的相加不同。
你打印下print(0.1+0.2)就知道了。

浮点数在内存中保存的是近似值,因此浮点数不能直接判断==

因为双等于是标识判断的,只有等于才是赋值符号

0.1和0.2在计算机中用二进制表示,但成了无限循环的数字,所以只能用近似值表示,这也就是浮点数,相对的还有定点数,它可以准确表示小数,涉及经济相关的(比如金钱,都用定点数表示)

这里有个网站专门来解释这个问题:0.30000000000000004.com

浮点数本身在计算机中的存储是用二进制形式,因此都是用近似值来表示。所以在判断浮点数相等的时候,一般不用直接等于,使用两者差值的绝对值小于某个极小值来判断。如下:

print(abs(0.1 + 0.2 - 0.3) < 10e-10)