2.1.4 数値タイプ

4つの数値タイプがあります。: 単純な整数, ロング整数, 浮動小数, そして 複素数です。 単純な整数(単に整数とも呼ばれます)はC言語のlongを使って実装されていて、 少なくとも32ビットの精度を持っています。ロング整数は無制限の精度を持っています。 浮動小数はC言語のdoubleを使って実装されています。 使っているマシンについて知らなければ、その精度についての考えは間違っています。        

複素数は実数部と虚数部を持っていて、どちらもC言語のdoubleを使って実装されています。 複素数 zからこれらの部分を取り出すためには、z.realz.imagを使います。

数値は数値リテラルまたは組み込み関数および演算の結果として生成されます。 修飾されていない整数リテラル(16進と8進数を含む)は単純整数を与えます。 "L"または"l"接尾子の付いた整数リテラルはロング整数を与えます。("1l"は11に非常に似ているので、"L"の方が望ましい。)
小数点または指数記号を含んだ数値リテラルは浮動小数を与えます。"j"または"J"が数値リテラルに付加されると複素数を与えます。        

パイソンは混在したタイプ同士の算術を完全にサポートします。つまり、2項演算子が異なる数値タイプをオペランドとして持つ場合、「より小さい」タイプを持つオペランドが他方のタイプに変換されます。ここで、単純な整数はロング整数より小さく、ロング整数は浮動小数より小さく、浮動小数は複素数より小さいという関係があります。 混在した数値タイプ間の比較には同じ規則が適用されます。 2.2 関数int(), long(), float(), complex()は数値を指定タイプに強制変換するために使用できます。      

すべての数値タイプは以下の演算をサポートします。演算は優先順位の低いものから高いものにソートされています。(同じ箱内の演算は同じ優先順位を持ちます。すべての数値演算は比較演算より高い優先順位を持ちます。)

演算 結果
x + y xyの和
x - y xyの差
x * y xyの積
x / y xyの商 (1)
x % y x / yの余り
-x xの負
+x xは不変
abs(x) xの絶対値または大きさ
int(x) 整数に変換されたx (2)
long(x) ロング整数に変換されたx (2)
float(x) 浮動小数に変換されたx
complex(re,im) 実数部re, 虚数部imの複素数。 imのデフォルトはゼロ。
divmod(x, y) (x / y, x % y)の組 (3)
pow(x, y) xy
x ** y xy
 

注:

(1)
整数(単純またはロング)の割算に対しては、結果は整数になります。 結果は常にマイナス無限大に対して丸められます。1/2は0、(-1)/2は-1、1/(-2)は-1、 (-1)/(-2)は0になります。   

(2)
浮動小数から(単純またはロング)整数への変換ではCのように、丸めまたは切捨てが起きます。よく定義された変換が必要であれば、モジュールmath内の関数 floor()ceil()を参照して下さい。      

(3)
正確な定義については組み込み関数に関する節を参照。


guido@python.org