Python 还是例外?

Python 还是例外?,python,powershell,exception,nan,ieee-754,Python,Powershell,Exception,Nan,Ieee 754,在Python中,取负数的平方根会引发异常。 在PowerShell中,它返回一个NaN 为什么不同?我相信,根据IEEE 754,PowerShell行为是正确的。是这样吗?至少,这是我的想法 我相信除以零也会产生一个NaN,但是Python和PowerShell在这种情况下都会抛出异常 如您所见,被零除并不总是产生NaN。另一方面,异常可能生成为无限,在Python和PowerShell中可能没有定义为特殊数量 特殊数量的注意事项- 如果没有任何特殊的量,除了中止计算之外,没有什么好方法可

在Python中,取负数的平方根会引发异常。 在PowerShell中,它返回一个
NaN

为什么不同?我相信,根据IEEE 754,PowerShell行为是正确的。是这样吗?至少,这是我的想法


我相信除以零也会产生一个NaN,但是Python和PowerShell在这种情况下都会抛出异常

如您所见,被零除并不总是产生NaN。另一方面,异常可能生成为无限,在Python和PowerShell中可能没有定义为特殊数量

特殊数量的注意事项-

如果没有任何特殊的量,除了中止计算之外,没有什么好方法可以处理诸如取负数的平方根之类的异常情况

来源:

来自

很明显,对于PowerShell,任何积分类型都不存在无穷大值。

问题的部分答案-

如您所见,被零除并不总是产生NaN。另一方面,异常可能生成为无限,在Python和PowerShell中可能没有定义为特殊数量

特殊数量的注意事项-

如果没有任何特殊的量,除了中止计算之外,没有什么好方法可以处理诸如取负数的平方根之类的异常情况

来源:

来自


很明显,对于PowerShell,不存在任何整数类型的无穷值。

不同的语言表现不同?但它们不应该符合相同的标准,即IEEE 754的算术标准吗?请小心PowerShell/.NET中的除法。整数除以零抛出,但对于+/-1.0/0.0,双除法返回+/-无穷大,对于0.0/0.0,返回NaN。我认为这有点正常。IEEE 754标准是针对浮点运算而非整数运算的。您可以使用except使用
try
except
捕获Python中的异常。在异常情况下,使用
float('NaN')
获取
NaN
。语言彼此不同(包括numpy等模块),因此您必须相应地调整代码。同一篇文章中,“因此IEEE标准定义了c/0==±Inf,只要c!=0。”因此,PowerShell/.NET比Python更接近标准,看起来是这样的。不同的语言表现不同?但它们不应该符合相同的标准,即IEEE 754的算术标准吗?请小心PowerShell/.NET中的除法。整数除以零抛出,但对于+/-1.0/0.0,双除法返回+/-无穷大,对于0.0/0.0,返回NaN。我认为这有点正常。IEEE 754标准是针对浮点运算而非整数运算的。您可以使用except使用
try
except
捕获Python中的异常。在异常情况下,使用
float('NaN')
获取
NaN
。语言彼此不同(包括numpy等模块),因此您必须相应地调整代码。同一篇文章中,“因此IEEE标准定义了c/0==±Inf,只要c!=0。”因此,PowerShell/.NET似乎比Python更接近标准。PowerShell和Python似乎都定义了无穷大,我相信定义
无限
和返回
无限
是有区别的,尽管在这方面还需要做更多的研究。您是否发现Python或PowerShell的任何官方文档声称严格遵守IEEE 754?是的,它说PowerShell有正无穷大和负无穷大,与IEEE 754相同。@coding4fun用于浮点值,而不是整数。你尝试过什么?在IEEE754中,除以0产生正负无穷大。NaN是由微积分中“不确定”的表达式产生的,比如无穷减无穷或零除以零。我不记得IEEE754是否定义了负数的平方根。我不明白为什么会这样。这是一个明显的错误。(除非它是由0附近的舍入引起的,那么正确的答案应该是0。)PowerShell和Python似乎都定义了无穷大,还有NaN。@coding4fun我相信定义了
无穷大和返回
无穷大之间是有区别的,尽管还需要对此做更多的研究。您是否发现Python或PowerShell的任何官方文档声称严格遵守IEEE 754?是的,它说PowerShell有正无穷大和负无穷大,与IEEE 754相同。@coding4fun用于浮点值,而不是整数。你尝试过什么?在IEEE754中,除以0产生正负无穷大。NaN是由微积分中“不确定”的表达式产生的,比如无穷减无穷或零除以零。我不记得IEEE754是否定义了负数的平方根。我不明白为什么会这样。这是一个明显的错误。(除非它是由0附近的舍入引起的,否则正确答案为0。)