我想检查浮点数实际上是32位还是64位(以及numpy浮点数组的位数).应该有一个内置的,但只是没有发现...
Sve*_*ach 22
float可以通过请求Python的大小sys.float_info.但是,在许多不同的架构上,我从未遇到过64位以外的任何东西.
NumPy数组的项可能具有不同的大小,但您可以检查它们的大小,以字节为单位a.itemsize,其中a是NumPy数组.
den*_*nis 10
numpy.finfo列出尺寸和FLOAT32的其他属性...,包括
NEXP:比特数的指数,包括它的符号和偏差.
nmant:尾数中的位数.
在具有IEEE-754
标准浮点的机器上,
import numpy as np
for f in (np.float32, np.float64, float):
finfo = np.finfo(f)
print finfo.dtype, finfo.nexp, finfo.nmant
Run Code Online (Sandbox Code Playgroud)
将打印例如
float32 8 23
float64 11 52
float64 11 52
Run Code Online (Sandbox Code Playgroud)
(也可以试试float16和float128.)
print numpy.finfo(numpy.float)
Machine parameters for float64
---------------------------------------------------------------------
precision= 15 resolution= 1.0000000000000001e-15
machep= -52 eps= 2.2204460492503131e-16
negep = -53 epsneg= 1.1102230246251565e-16
minexp= -1022 tiny= 2.2250738585072014e-308
maxexp= 1024 max= 1.7976931348623157e+308
nexp = 11 min= -max
---------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
小智 5
浮点值的范围在sys.float_info对象中可用。
正如Sven所说,对于CPython float来说,它始终是64位的。但是Python的语言参考说
您只能接受可接受范围的基础机器体系结构(以及C或Java实现)。”
因此,其他Python实现不一定是这种情况。