有没有办法在Python中进行精确的浮点除法?
假设我尝试执行以下数学运算。
-
0.6 / 0.3
返回2.0
哪个是对的。太棒了,看起来数学很有效! -
0.6 / 0.2
返回2.9999999999999996
当3.0
将是正确的结果。 -
0.6 / 0.1
返回5.999999999999999
当6.0
将是正确的结果。
我想知道是否有一个我完全缺少的简单解决方案?
注意:我已经看到了 Is floating point math broken? 的答案尽管许多答案在解释浮点运算方面做得非常出色,但似乎没有任何答案提供有关如何在 Python 中准确地使用浮点值进行除法的实际解决方案。
最佳答案
Python 的 decimal当浮点除法会提供不太准确的结果时,库提供了计算更准确结果的功能。
这里是一个示例,显示decimal
库将正确的结果返回给几个被除的浮点值。
from decimal import Decimal
Decimal('0.6')/Decimal('0.3')
返回正确的Decimal('2')
。Decimal('0.6')/Decimal('0.2')
返回正确的Decimal('3')
。Decimal('0.6')/Decimal('0.1')
返回正确的Decimal('6')
。
正如 @JohnColeman 指出的,使用十进制模块进行这些计算将提供更准确的结果,但代价是计算执行的速度。
关于python - 在Python 3中进行精确的浮点除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40808511/