2011-11-21 31 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 
---------------------------------------------------------------------