2011-11-21 3 views

答えて

16

floatのサイズはsys.float_infoでリクエストできます。しかし、私は64ビット以外のものに遭遇したことはありませんでした。

NumPy配列のアイテムのサイズは異なる場合がありますが、a.itemsizeでサイズをバイト単位で確認できます。aはNumPy配列です。

+9

sys.float_infoは、多くの興味深いプロパティが含まれていますが、フロートのサイズがpanda-34は、それが正確にあなたが何を意味依存し、それらの1 @ –

+0

ではありません"サイズ"。いずれにせよ、それはあなたが得ることができる最高の情報です。 (あなたは 'sys.float_info'の情報からビット単位で簡単にサイズを回復することができますが、それがどのように役に立つのだろうと思っています) –

+4

OPはビット単位でサイズを32、64と明示しています。指数範囲と仮数の長さに基づいていくつかの野生の推測をしたいのでなければ、float_infoからのビット数を返します。 –

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 
--------------------------------------------------------------------- 
関連する問題