use*_*606 4 python integer-overflow
我正在查看下面代码的输出。当我将 1 增加到 float 的最大值时,输出似乎是我所期望的,但是当我执行 x=x*1.5 时,我将 inf 视为输出,我认为这是浮点溢出。我的问题是,从预期输出到 inf 的上限是多少?
x=sys.float_info.max
x=x+1
x
Run Code Online (Sandbox Code Playgroud)
Python float 没有足够的精度来存储+ 1for sys.float_info.max,因此该操作实际上相当于加零。下面的比较实际上返回True:
print sys.float_info.max+1==sys.float_info.max
Run Code Online (Sandbox Code Playgroud)
仅当您开始添加足够大的数字以导致该浮点数的 IEE754 二进制表示发生变化时,您才会得到inf,例如:
x+0.00000000000000001E308
Run Code Online (Sandbox Code Playgroud)
在我的机器上返回inf(Windows 64位)
| 归档时间: |
|
| 查看次数: |
9543 次 |
| 最近记录: |