2011-11-21 109 views

回答

16

Python float的大小可以通过sys.float_info要求。尽管在许多不同的体系结构中,我从来没有遇到过比64位更多的东西。

NumPy数组的项目可能具有不同的大小,但您可以通过a.itemsize检查它们的大小(字节数),其中a是一个NumPy数组。

+9

sys.float_info包含了许多有趣的特性,但一个浮动的大小不是 –

+0

@他们中的一个熊猫-34这取决于究竟你的意思“尺寸”。无论如何,这是您可以获得的最佳信息。 (你可以很容易地从sys.float_info中的信息中恢复大小,但是我想知道它是如何有用的。) –

+4

OP明白地询问了32位或64位的大小,并且你无法恢复大小除非你想根据指数范围和尾数长度做一些疯狂的猜测 –

4

浮点值的范围在sys.float_info对象中可用。

正如Sven所说,对于CPython float总是64位。但Python's language reference

您是在底层的机器架构的怜悯(和C或Java实现),对接受的范围内......“。

所以这不一定是其他情况Python实现

+0

由于OP使用NumPy,所以他可能不太关心其他Python实现。好点,但。 :) –

6

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了。)

+0

加1位符号 – denfromufa

+0

float16 \t半精度浮点数:符号位,5位指数,10位尾数; float32 \t单精度浮点数:符号位,8位指数,23位尾数; float64 \t双精度浮点数:符号位,11位指数,52位尾数 – denfromufa

3
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 
---------------------------------------------------------------------