python - 如何让 Python 除以 -0.0 和 0.0 分别得到 -Inf 和 Inf?

标签 python python-2.7 ieee-754 divide-by-zero

在我的情况下,除以 0.0 或 -0.0 是合理的,我希望分别看到 +Inf 和 -Inf 作为结果。看来 Python 喜欢抛出一个

ZeroDivisionError: float division by zero

无论哪种情况。显然,我想我可以简单地用 0.0.0.0 的测试来包装它。但是,我找不到区分 +0.0 和 -0.0 的方法。 (仅供引用,您可以通过键入或通过常见计算(例如 -1.0 * 0.0)轻松获得 -0.0。

IEEE 很好地处理了这一切,但 Python 似乎煞费苦心地隐藏了 IEEE 深思熟虑的行为。事实上,0.0 == -0.0 实际上是一个 IEEE 特性,因此 Python 的行为严重破坏了事情。它在 C、Java、Tcl 甚至 JavaScript 中运行良好。

建议?

最佳答案

from math import copysign

def divide(numerator, denominator):
    if denominator == 0.0:
        return copysign(float('inf'), denominator)
    return numerator / denominator

>>> divide(1, -0.0)
-inf
>>> divide(1, 0)
inf

关于python - 如何让 Python 除以 -0.0 和 0.0 分别得到 -Inf 和 Inf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226633/

相关文章:

Python 相当于 'grep -C N' ?

python - python中的多文档摘要

python - 如何使用 Python 中的时间序列预测来预测 future 日期?

python - Kivy:在重新进入屏幕时将切换按钮重置为 "normal"

python - 使用 Python/Requests/BeautifulSoup 高效抓取网页

c# - 浮点范围缩减

python - 将计数器应用于 pandas 的唯一列值

python - status不是200时如何获取body?

floating-point - IEEE 754 中表示的最大 float

java - 使用非默认舍入模式将 long 转换为 double