Pet*_*etr 5 python infinity complextype
在 Python 3.10.9 中,此示例引发OverflowError: complex exponentiation:
complex("inf") ** 1
Run Code Online (Sandbox Code Playgroud)
但这是有效的,评估为(nan+nanj):
complex("inf") ** 2
Run Code Online (Sandbox Code Playgroud)
为什么会这样?有需要报告的错误吗?
小智 -3
import math
Infinity = complex(math.inf, 0) # or complex("inf") whichever returns (inf+0j)
print(Infinity)
result0 = Infinity ** 2
print(result0) # prints (nan+nanj)
result1 = Infinity ** 1
print(result1) # prints OverflowError: complex exponentiation
Run Code Online (Sandbox Code Playgroud)
嘿彼得!这是因为复杂类不支持无限值的 ** 运算符。
** 运算符用于 Python 中的求幂。当应用于复数时,它将第一个数字计算第二个数字的幂。但是,如果其中一个数字是无限的,则结果是不确定的。
此编程行为由 IEEE 754 浮点标准定义。在此标准中,一些规则管理涉及“inf”和“nan”的操作,并且这些规则在大多数编程语言(包括 Python)中一致实现。
复杂(“inf”)** 1:
在这种情况下,您将无穷大提高到 1 次方。根据规则,任何提高到 1 次方的值都保持不变。因此,结果是 inf(正无穷大)。所以 python 无法在这里计算它并给你一个错误。
复杂(“inf”)** 2:
在这里,你正在对无穷大进行平方。根据规则,这会产生一个复数,其实部为“inf”,虚部为“nan”
然而,Python 选择使用特殊值 NaN(非数字)来表示未定义的值。因此,complex(math.inf, 0) ** 2 的结果是(nan+nanj)。
因此,这里不存在与这些操作相关的隐藏错误。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |