2017-08-16 84 views
-1

當我運行在python3下面的代碼錯誤的結果

a = 4.1 
b = 1000000 
c = 0 
result = (a * b) + c 
print(result) 

我得到這個結果

4099999.9999999995 

你能告訴我如何糾正這種計算?

PS。這是python中的一個已知問題?

+2

可能重複[浮點數學是否被破壞?](https://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Phylogenesis

+0

@Phylogenesis我看到非常感謝你!你能否建議我如何糾正計算? –

+1

是的。這是Python中的一個已知問題。所有支持固定長度浮點數的編程語言都存在一個問題。並支持所有支持固定長度浮點數的硬件。假設這是一個令人傷心的事實......擁有有限的空間 您可以編碼有限數量的數字,而實數是不可數的。 - 另一方面,當您測量地球 - 太陽距離時,第16位的誤差相當於10微米量級的誤差。如果您在使用電腦時需要更高的精度,您可以擁有它。但它並不常見。 – gboffi

回答