我正在使用Python numpy进行计算。这是一个结果numpy数组:
[ 5.15054786e-11 5.15251385e-11 5.15262922e-11 ..., 5.21100674e-11
5.21097550e-11 5.21088179e-11]
那些非常小。在什么时候我应该担心计算中的下溢?这些需要超精确。是否有一个值得确定的值范围,或者可能是一个表明这个值的参考?
答案 0 :(得分:2)
64位浮点数中最小的可表示normal number为:
cache
使用denormal numbers可以将该范围扩展一点,将最小值降低到:
>>> 2**-1022
2.2250738585072014e-308
可是:
>>> 2**(-1022 - 52)
5e-324
另一个相关的小数字(同样是64位数字)将是:
>>> 2**(-1022 - 53)
0.0
,因为:
>>> 2**-52
2.220446049250313e-16
但:
>>> 1 + 2**-52
1.0000000000000002