-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