python計算489.43-488.83=0.6000000000000227?多餘的數哪來的?

問題引發

python計算489.43-488.83=0.6000000000000227?多餘的數哪來的?

為什麼使用Python計算489.43-488.83=0.6000000000000227?

問題解答

電腦存儲小數的方式導致的精度問題。

一個小數在電腦裡通常只佔數個字節(4/8/10較為常見),這麼點空間當然存不下所有的小數,或者換句話說現實中小數的數量是無限的,有0.1也可以有0.01,還可以有0.001,當然還能有0.000000000001。

而在這幾個字節中存儲常用的小數,只能是離散的,舉個例子,雖然這個例子稍微有點脫離現實。每隔0.0003一個數 ,那麼就可以有0.0003/0.0006/0.0009 …… ,這種情況下如果你要表達0.0005,那隻能是最近似的值選0.0006了。你這個情況就是類似這種,電腦表示不出精確的0.6,就只能是最近似的值了。

參考:https://docs.python.org/3/tutorial/floatingpoint.html

最後多說一句,小編是一名python開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,並在後臺私信小編:“01”即可領取。


分享到:


相關文章: