如何获取Python长双字面值?
如何获取Python长双字面值?我试过了如何获取Python长双字面值?,python,numpy,long-double,Python,Numpy,Long Double,如何获取Python长双字面值?我试过了 numpy.longdouble(1e309) 及 但它们都只返回inf。正确的方法是什么 [EDIT]下面的答案是,在某些平台中,长双精度被视为双精度。我的系统不是这样的。为了证明这一点,我尝试了: np.longdouble(2.0)**1029 在我的系统上(Mac OS 10.11)。它回来了 5.7526180315594109047e+309 [EDIT2]正如建议的那样,我只是尝试了一下 np.finfo(np.longdouble
numpy.longdouble(1e309)
及
但它们都只返回inf
。正确的方法是什么
[EDIT]下面的答案是,在某些平台中,长双精度被视为双精度。我的系统不是这样的。为了证明这一点,我尝试了:
np.longdouble(2.0)**1029
在我的系统上(Mac OS 10.11)。它回来了
5.7526180315594109047e+309
[EDIT2]正如建议的那样,我只是尝试了一下
np.finfo(np.longdouble)
给
finfo(resolution=1e-18,
min=-1.18973149536e+4932,
max=1.18973149536e+4932,
dtype=float128)
在我的操作系统上。请注意,我的numpy版本是1.10.1。在某些平台上,
长双精度
与双精度
基本相同。发件人:
NPY_Longdoull
特定于平台的浮点数的枚举值
点类型,至少与NPY_DOUBLE一样大,但在
许多平台
有时长双精度浮点值是80位浮点值(但不是很多人所期望的128位浮点值)。
你可向以下机构查询:
numpy.finfo(numpy.longdouble)
请考虑以下答案:
您也可以尝试以下方法:
n = numpy.longdouble(1e300) * 1e9
版本2现在可以使用(numpy 1.19.1,机器:x86-64):
>np.longdouble('1e309')
1e+309
另一个没有
>np.longdouble(1e309)
inf
这不起作用,因为1e309首先由python解释器解释,它将其转换为64位浮点数(因为它不知道更好的数字),然后发送给numpy。您必须以字符串文字的形式为numpy提供数字,以便它有机会处理数字本身
^x86-64基本上是指运行Windows、MacOS或Linux的任何个人计算机。我相信它应该适用于所有这些设备,因为据我所知,x86-64都有x87浮点单元,本机支持80位浮点。即使是
numpy.longdouble
的问题实际上是扩展精度。不过,感谢您的帮助。然而,这个问题仍然没有解决。为什么不直接使用numpy.longdouble(10.0)**309?当我检查numpy.finfo(numpy.longdouble)
时,我如何从结果中判断我是使用80位还是128位浮点?似乎它与此线程有些重复:您使用的是哪个numpy版本?看起来是2015年8月28日,所以最新版本的NumPy应该有修复程序。我目前没有访问1.10安装的权限进行检查。@user2357112numpyversion1.10.1。
n = numpy.longdouble(1e300) * 1e9