2017-08-16 82 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

回答