##
4 数値型

4 つの異なる数値型があります: 通常の整数型 、 長整数型 、浮動小数点型 、および 複素数型 です。

さらに、ブール方は通常の整数型のサブタイプです。通常の整数 (単に 整数型 とも呼ばれます) は C では `long` を 使って実装されており、少なくとも 32 ビットの精度があります。 長整数型には精度の制限がありません。浮動小数点型は C では `double` を使って実装されています。しかし使っている計算機 が何であるか分からないなら、これらの数値型の精度に関して断言はできません。

複素数型は実数部と虚数部を持ち、それぞれの C では `double` を 使って実装されています。複素数 z から実数および虚数部を取り出す には、`z.real` および `z.imag` を使います。

数値は、数値リテラルや組み込み関数や演算子の戻り値として生成されます。 修飾のない整数リテラル (16 進表現や 8 進表現の値も含みます) は、 通常の整数値を表します。値が通常の整数で表すには大きすぎる場合、 "`L`" または "`l`" が末尾につく整数リテラル は長整数型を表します ("`L`" が望ましいです。というのは "`1l`" は 11 と非常に紛らわしいからです！) 小数点または 指数表記のある数値リテラルは浮動小数点数を表します。 数値リテラルに "`j`" または "`J`" をつけると 実数部がゼロの複素数を表します。複素数の数値リテラルは実数部と 虚数部を足したものです。

Python は型混合の演算を完全にサポートします: ある 2 項演算子が 互いに異なる数値型の被演算子を持つ場合、より ``制限された'' 型の 被演算子は他方の型に合わせて広げられます。ここで通常の整数は 長整数より制限されており、長整数は浮動小数点数より制限されており、 浮動小数点は複素数より制限されています。 型混合の数値間での比較も同じ規則に従います。 7コンストラクタ `int()` 、`long()` 、`float()`、 および `complex()` を使って、特定の型の数を生成することが できます。

全ての数値型（complex は例外）は以下の演算をサポートします。これらの演算は 優先度の低いものから順に並べられています (同じボックスにある演算は 同じ優先度を持っています; 全ての数値演算は比較演算よりも 高い優先度を持っています):

演算 | 結果 | 注釈
--- | --- | ---
`x + y` | x と y の加算 |
`x - y` | x と y の減算 |
`x * y` | x と y の乗算 |
`x / y` | x と y の除算 | (1)
`x % y` | `x / y` の剰余 | (4)
`-x` | x の符号反転 |
`+x` | x の符号不変 |
`abs(x)` | x の絶対値または大きさ |
`int(x)` | x の通常整数への変換 | (2)
`long(x)` | x の長整数への変換 | (2)
`float(x)` | x の浮動小数点数への変換 |
`complex(re,im)` | 実数部 re 、虚数部 im の複素数。 im のデフォルト値はゼロ。 |
`c.conjugate()` | 複素数 c の共役複素数 |
`divmod(x, y)` | `(x / y, x % y)` からなるペア | (3)
`pow(x, y)` | x の y 乗 |
`x ** y` | x の y 乗 |

注釈:

(1)
  (通常および長) 整数の割り算では、結果は整数になります。 この場合値は常にマイナス無限大の方向に丸められます: つまり、1/2 は 0、 (-1)/2 は -1、1/(-1) は -1、そして (-1)/(-2) は 0 になります。 被演算子の両方が長整数の場合、計算値に関わらず結果は長整数で返される ので注意してください。

(2)
  浮動小数点数から (通常または長) 整数への変換では、C におけるのと同様の 値の丸めまたは切り詰めが行われるかもしれません; きちんと定義された 変換については、`math` モジュールの `floor()` および `ceil()` を参照してください。

(3)
  完全な記述については、2.1、``組み込み関数'' を参照してください。

(4)
  複素数の切り詰め除算演算子、モジュロ演算子、および `divmod()`。

  リリース 2.3 で撤廃されました。 適切であれば、`abs()` を使って浮動小数点に変換してください。

#### Footnotes

... 型混合の数値間での比較も同じ規則に従います。7
  この結果として、リスト `[1, 2]` は `[1.0, 2.0]` と等しいと見なされます。タプルの場合も同様です