我想检查浮点数实际上是32位还是64位(以及numpy浮点数组的位数)。应该有一个内置的,但只是没有找到...
答案 0 :(得分:17)
可以通过sys.float_info
请求Python float
的大小。但是,在许多不同的架构中,我从未遇到过64位以外的任何东西。
NumPy数组的项目可能有不同的大小,但您可以按a.itemsize
检查其大小(以字节为单位),其中a
是NumPy数组。
答案 1 :(得分:7)
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
将打印例如。
float32 8 23
float64 11 52
float64 11 52
(尝试使用float16和float128。)
答案 2 :(得分:6)
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
---------------------------------------------------------------------
答案 3 :(得分:5)
sys.float_info
对象中提供了浮点值范围。
正如Sven所说,CPython float
总是64位。但是Python's language reference说
您可以接受可接受范围的底层机器架构(以及C或Java实现)......“。
因此其他Python实现不一定如此。
答案 4 :(得分:0)
python -c“ import sys,math; print(sys.float_info.mant_dig + math.ceil(math.log2(sys.float_info.max_10_exp-sys.float_info.min_10_exp))+ 1)”
“ + 1”是因为尾数中的一位被隐式存储。