2011-11-21 2 views

답변

16

파이썬 의 크기는 sys.float_info을 통해 요청할 수 있습니다. 64 비트 이외의 다른 아키텍처에서는 전혀 문제가 발생하지 않았습니다.

NumPy 배열의 항목 크기가 다를 수 있지만 a.itemsize에 의해 크기를 바이트 단위로 확인할 수 있습니다. a은 NumPy 배열입니다.

+9

sys.float_info은 많은 흥미로운 속성을 포함하지만 부동의 크기는 팬더-34 그것은 정확히 무엇을 의미 따라 그들 중 하나 @ –

+0

아니다 "크기". 어쨌든, 당신이 얻을 수있는 최고의 정보입니다. (당신은'sys.float_info'의 정보에서 비트 단위로 쉽게 크기를 복구 할 수 있습니다. 그러나 이것이 얼마나 유용한 지 궁금합니다.) –

+4

OP는 크기를 32 비트 또는 64 비트로 명시 적으로 물었고 크기를 복구 할 수 없습니다 당신이 지수 범위와 가수를 기반으로 몇 가지 야생 추측을하고 싶지 않다면 float_info의 비트 –

4

부동 소수점 값의 범위는 sys.float_info 개체에서 사용할 수 있습니다.

스벤이 말한 것처럼 CPython의 경우 float은 항상 64 비트입니다. 그러나 Python's language reference

당신은 ... "허용 범위에 대한 기본 시스템 아키텍처의 자비 (그리고 C 또는 Java 구현)에 있습니다.

그래서이 반드시 기타의 경우에는 해당되지 않습니다 말한다 파이썬 구현

+0

OP가 NumPy를 사용하기 때문에 다른 Python 구현에 대해별로 신경 쓰지 않을 가능성이 있습니다. 그래도 좋은 지적이다. :) –

6

numpy.finfo 목록 크기와
, NEXP 포함 float32 ... 다른 속성 :..의 기호와 편견을 포함한 지수의 비트 수
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 
--------------------------------------------------------------------- 
관련 문제