如何获得Python long double literal?

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.

Rom*_* Kh 2

在某些平台上long double本质上与double. 来自numpy 文档

NPY_LONGDOUBLE

特定于平台的浮点类型的枚举值至少与 NPY_DOUBLE 一样大,但在许多平台上更大。

有时,long double 是 80 位浮点数(但不是许多人期望的 128 位)。您可以检查:

numpy.finfo(numpy.longdouble)
Run Code Online (Sandbox Code Playgroud)

还请考虑以下答案:

  1. /sf/answers/1783715811/
  2. /sf/answers/1297632311/

您也可以尝试这个:

n = numpy.longdouble(1e300) * 1e9
Run Code Online (Sandbox Code Playgroud)