在这种情况下,浮点加法如何工作?
In [6]: np.finfo(np.float64).max + 1
Out[6]: 1.7976931348623157e+308
为什么没有出现溢出?
浮点类型是一种科学记数法,这意味着它们越接近 0,精度就越高。 64 位浮点数的情况具有大约 16 位十进制精度:53 位有效数,因此
log10(2^53)
约为 16。这意味着在数字大小上小于这 16 位的任何值都会因舍入而丢失。
对于
10^308
来说确实如此。其幅度远远超出了 1
的值在 16 位精度之内的范围。事实上,对于大于约 10^16
的值,添加 1 根本不会改变该值,无论是否溢出。