有没有一种方法可以在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
库将正确的结果返回给被除以的几个浮点值。在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指出的,使用十进制模块进行这些计算将提供更精确的结果,但代价是计算的执行速度。在
相关问题 更多 >
编程相关推荐