Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在用 Python numpy 进行计算。这是一个生成的 numpy 数组:
[ 5.15054786e-11 5.15251385e-11 5.15262922e-11 ..., 5.21100674e-11 5.21097550e-11 5.21088179e-11]
那些很小。我应该在什么时候担心计算中的下溢?这些需要非常精确。是否有明确的值范围需要担心,或者可能是说明该值的参考?
64 位浮点数中可表示的最小正规数是:
>>> 2**-1022 2.2250738585072014e-308
使用非正规数可以将该范围扩大一点,将最小值降至:
>>> 2**(-1022 - 52) 5e-324
但:
>>> 2**(-1022 - 53) 0.0
另一个相关的小数字(同样是 64 位数字)是:
>>> 2**-52 2.220446049250313e-16
因为:
>>> 1 + 2**-52 1.0000000000000002
>>> 1 + 2**-53 1.0