zel*_*ell 5 python numpy long-double
如何获得Python long double literal?我试过了
numpy.longdouble(1e309)
Run Code Online (Sandbox Code Playgroud)
和
numpy.longdouble("1e309")
Run Code Online (Sandbox Code Playgroud)
但他们俩都回来了inf.这样做的正确方法是什么?
[ 编辑 ]下面的答案说,在某些平台上,长双倍被视为双重.在我的系统上并非如此.为了表明这一点,我尝试过:
np.longdouble(2.0)**1029
Run Code Online (Sandbox Code Playgroud)
在我的系统上(Mac OS 10.11).它回来了
5.7526180315594109047e+309
Run Code Online (Sandbox Code Playgroud)
[ EDIT2 ]正如所建议的那样,我只是尝试过
np.finfo(np.longdouble)
Run Code Online (Sandbox Code Playgroud)
这使
finfo(resolution=1e-18,
min=-1.18973149536e+4932,
max=1.18973149536e+4932,
dtype=float128)
Run Code Online (Sandbox Code Playgroud)
在我的操作系统上 有关信息,我的numpy版本是1.10.1.
在某些平台上long double本质上与double. 来自numpy 文档:
NPY_LONGDOUBLE
特定于平台的浮点类型的枚举值至少与 NPY_DOUBLE 一样大,但在许多平台上更大。
有时,long double 是 80 位浮点数(但不是许多人期望的 128 位)。您可以检查:
numpy.finfo(numpy.longdouble)
Run Code Online (Sandbox Code Playgroud)
还请考虑以下答案:
您也可以尝试这个:
n = numpy.longdouble(1e300) * 1e9
Run Code Online (Sandbox Code Playgroud)