在python3中进行精确的浮点除法

2024-04-25 09:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以在Python中进行精确的浮点除法?在

假设我试着做下面的数学运算。在

  1. 0.6 / 0.3返回正确的2.0。很酷,看起来数学很管用!在
  2. 0.6 / 0.2返回2.9999999999999996,而3.0是正确的结果。在
  3. 0.6 / 0.1返回5.999999999999999,而6.0是正确的结果。在

我想知道是否有一个简单的解决方案来解决这个问题,而我却完全不知道?在

注意:我已经看到了Is floating point math broken?的答案,尽管许多答案在解释浮点运算方面做得非常出色,但似乎没有任何一个响应提供了如何在Python中对浮点值进行精确除法的实际解决方案。在


Tags: 方法答案is数学math解决方案point浮点
1条回答
网友
1楼 · 发布于 2024-04-25 09:55:40

Python的decimal库提供了计算更精确结果的功能,否则浮点除法将提供不太精确的结果。在

下面是一个示例,它显示decimal库将正确的结果返回给被除以的几个浮点值。在

from decimal import Decimal
  1. Decimal('0.6') / Decimal('0.3')返回正确的Decimal('2')。在
  2. Decimal('0.6') / Decimal('0.2')返回Decimal('3'),这是正确的。在
  3. Decimal('0.6') / Decimal('0.1')返回正确的Decimal('6')。在

正如@JohnColeman指出的,使用十进制模块进行这些计算将提供更精确的结果,但代价是计算的执行速度。在

相关问题 更多 >