lit*_*Yii 10 python floating-point
x = 1.5 * 10 ** 156
print(x * x)
print(x ** 2)
Run Code Online (Sandbox Code Playgroud)
x * x并且x ** 2在数学上是等价的。但当x较大时,前者可以返回 的结果inf,而后者会引发溢出错误。
x = 1.5 * 10 ** 156
print(x * x)
print(x ** 2)
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
小智 6
为什么乘法和乘方之间存在差异?
\n当 Python 第一次被编写时,这可能已经深深地埋藏在历史的迷雾之中了。Python中的浮点乘法必须遵循IEEE-754标准制定的规则,该标准存在乘法溢出到特殊值float(\xe2\x80\x98inf\xe2\x80\x99)的情况。
\n但由于现在已经失去的原因,无论是谁设计了 Python\xe2\x80\x99s 指数运算符和 pow() 函数,都做出了不同的决定来引发 OverflowError。
\n\xe2\x80\x99s 差异背后可能没有真正的逻辑。这可能只是当时有人认为这是个好主意的一个例子。
\n\n| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |