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)