【发布时间】:2015-07-01 11:37:16
【问题描述】:
我在我的 python 终端中检查了指针的大小(在 Enthought Canopy IDE 中) 通过
import ctypes
print (ctypes.sizeof(ctypes.c_voidp) * 8)
我有一个 64 位架构,使用 numpy.float64 就可以了。但是我不能使用np.float128?
np.array([1,1,1],dtype=np.float128)
或
np.float128(1)
结果:
AttributeError: 'module' object has no attribute 'float128'
我正在运行以下版本:
sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)
【问题讨论】:
-
@Matthias:除非你有一个非常不寻常的平台(例如,IBM 大型机),否则 NumPy 几乎肯定不会让你访问真正的 128 位浮点数。在某些平台上,NumPy 支持 1985 版 IEEE 754 标准中定义的 x87 80 位浮点格式,在某些那些平台上,该格式报告为
float128(而在其他人报告为float96)。但是所有发生的事情是你有一个 80 位格式和 48 位(或 16 位)填充。 -
@PadraicCunningham
np.longdouble导致np.float64 -
@PadraicCunningham 只要我的精度比 float64 高(用于比较正交规则),确切的大小并不重要
-
@Matthias:那你可能不走运了。你在 Windows 上吗? IIRC,Windows 平台将
long double定义为与double相同的类型,因此np.longdouble不会给您任何额外的精度。