如何在python中检查float的大小?

时间:2011-11-21 17:43:46

标签: python numpy

我想检查浮点数实际上是32位还是64位(以及numpy浮点数组的位数)。应该有一个内置的,但只是没有找到...

5 个答案:

答案 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”是因为尾数中的一位被隐式存储。