无法在 64 位架构的 Python 中使用 128 位浮点数

Cannot use 128bit float in Python on 64bit architecture

我检查了 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)

更新:从评论来看,在 64 位系统上使用 128 位浮点数似乎毫无意义。

我在 64 位 Ubuntu 14.04 系统上使用 anaconda sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)

和 128 位浮点数工作正常:

import numpy
a = numpy.float128(3)

这可能是分发问题。尝试:

编辑: 来自评论的更新:

Not my downvote, but this post doesn't really answer the "why doesn't np.float128 exist on my machine" implied question. The true answer is that this is platform specific: float128 exists on some platforms but not others, and on those platforms where it does exist it's almost certainly simply the 80-bit x87 extended precision type, padded to 128 bits. – Mark Dickinson

对我来说,问题是 Python 模块在 Windows 中有问题(PyOpenGL 对于那些关心的人)。 This 站点有 Python 轮子,其中包含许多流行模块的“固定”版本,以解决 float128 问题。


注意:这个问题有一个公认的答案。我的回答是为了未来的搜索者,因为这个问题在 module 'numpy' has no attribute 'float128' 的 Google 结果中很高。