-1
當我運行在python3下面的代碼錯誤的結果
a = 4.1
b = 1000000
c = 0
result = (a * b) + c
print(result)
我得到這個結果
4099999.9999999995
你能告訴我如何糾正這種計算?
PS。這是python中的一個已知問題?
當我運行在python3下面的代碼錯誤的結果
a = 4.1
b = 1000000
c = 0
result = (a * b) + c
print(result)
我得到這個結果
4099999.9999999995
你能告訴我如何糾正這種計算?
PS。這是python中的一個已知問題?
這是一個known behaviour on python2,但also python3。
該文檔建議四捨五入值或使用decimal模塊。
可能重複[浮點數學是否被破壞?](https://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Phylogenesis
@Phylogenesis我看到非常感謝你!你能否建議我如何糾正計算? –
是的。這是Python中的一個已知問題。所有支持固定長度浮點數的編程語言都存在一個問題。並支持所有支持固定長度浮點數的硬件。假設這是一個令人傷心的事實......擁有有限的空間 您可以編碼有限數量的數字,而實數是不可數的。 - 另一方面,當您測量地球 - 太陽距離時,第16位的誤差相當於10微米量級的誤差。如果您在使用電腦時需要更高的精度,您可以擁有它。但它並不常見。 – gboffi