0.1 + 0.2 不等於 0.3

2020-08-10 09:57:35
>>> 0.1+0.2
0.30000000000000004
>>> 
>>> 0.1+0.2 == 0.3
False
>>> round(0.1+0.2,1) == 0.3
True
>>> 

這個問題叫做 不確定尾數問題
不是隻在python中存在 在很多程式語言中都存在
它涉及到了計算機對數位運算的內部實現原理

浮點數間運算存在不確定尾數,不是Bug
在計算機中所有數位都是由2進製表示

嚴格來說 53位二進制表示數位部分
由於二進制和十進制不存在嚴格的對等方式

所以0.1用二進制表示是一個無限小數
計算機只能擷取其中的53位 無限接近0.1
計算機只會顯示16位元
1.png

詳情視訊

round(x,d):對x進行四捨五入 d是小數擷取位數