python浮點數精度丟失的原因和解決方法

原因

浮點數(小數)在計算機中實際是以二進制存儲的,并不精確。
比如0.1是十進制,轉換為二進制后就是一個無限循環的數:
0.00011001100110011001100110011001100110011001100110011001100
python是以雙精度(64bit)來保存浮點數的,后面多余的會被砍掉,所以在電腦上實際保存的已經小于0.1的值了,后面拿來參與運算就產生了誤差。

解決:decimal

from decimal import *

a = Decimal('4.2')
b = Decimal('2.1')
c = a * b

缺點

當精度提升的同時,也必然犧牲性能。但是有時候是值得的,比如在財務對數據精度要求比較高的情況下。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容