python - 在Python 3中进行精确的浮点除法

标签 python floating-point

有没有办法在Python中进行精确的浮点除法?

假设我尝试执行以下数学运算。

  1. 0.6 / 0.3返回2.0哪个是对的。太棒了,看起来数学很有效!
  2. 0.6 / 0.2返回2.99999999999999963.0将是正确的结果。
  3. 0.6 / 0.1返回5.9999999999999996.0将是正确的结果。

我想知道是否有一个我完全缺少的简单解决方案?

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

最佳答案

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 指出的,使用十进制模块进行这些计算将提供更准确的结果,但代价是计算执行的速度。

关于python - 在Python 3中进行精确的浮点除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40808511/

相关文章:

Python 嵌套数据持久化

python - 如何用星号 ("*") 替换 csv 文件列中的非重复值?

python - 隐藏 stdlib 包名称的子包中的绝对导入失败

java - 输出打印预初始化的 Java double 与 inline 的区别

无法修改 malloc() 分配的地址处的值

python - flask 测试 : issues with session management with unittests

python - 为什么 Manager().dict() 只更新了一层?

javascript - 为什么在 Javascript 中添加两位小数会产生错误的结果?

python - 如何从 2 个值形成一个字符串

python - 自动 int 到 float 转换