一个惊喜**数学.nan和0j**数学.nan

2024-04-26 13:19:44 发布

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

我很惊讶

>>> import math
>>> 1**math.nan
1.0

在我们努力的同时

^{pr2}$

我没有找到其他的例子。是不是有什么原因或逻辑让我错过了这个选择?还是这是一张纸条?在

我在等nan。对于除10j之外的其他所有数字。在

编辑1:感谢jedwards下面的评论,我有了一个参考。但我还是不明白为什么。为什么要以此为标准?另外,找不到对0j**mat.nan的引用。。。在

{<1{/1>返回相同的计算结果:{/cd2>总是返回一个计算结果。在这种情况下,我们使用nan作为参数不应该影响结果,我们仍然应该得到固定的答案。在

这当然可以解释1**math.nan和{}。这也解释了为什么0**math.nan给出nan而不是{}(因为0**n是{},但当{}的结果是{}),并且如果我们同意该参数不必是有限的,则可能会被扩展以覆盖为什么{}是{}。在

但是如果这是场景背后的逻辑,那么0j**math.nan应该是nan,因为0j**n是{},除了{},其中{}是{}。所以。。。0j**math.nan有不同的推理吗?还是在执行中出了问题?在


Tags: import编辑参数标准评论原因数字math
1条回答
网友
1楼 · 发布于 2024-04-26 13:19:44

引用这个question,它反过来引用ieee754(参见Wikipedia

The 2008 version of the IEEE 754 standard says that pow(1,qNaN) and pow(qNaN,0) should both return 1 since they return 1 whatever else is used instead of quiet NaN.

有关详细信息,请参见第56页,共页IEEE 754 2008

pow(x, ±0) is 1 for any x (even a zero, quiet NaN, or infinity)

pow(±0, y) is ±∞ and signals the divideByZero exception for y an odd

因此,推理似乎是无论指数中的k是多少,1^k = 11^Nan也应该是1。为什么这种推理是合理的(我肯定是这样的),我还需要进一步挖掘。在

就个人而言,我认为这是有意义的-Nan在数学中并不存在,只是我们的浮点表示无法处理它(或者,Nan是“计算太多了,这是一些数字,但不确定是哪个”)。因此,1^Nan可以是1的任意幂(不是1对不是数字的东西),但是由于答案总是1,所以只有当我们将1^Nan定义为1时,它才有帮助。在

相关问题 更多 >