Pythonの数値型
数値型は名前の通り、数値を扱うデータ型の総称です。
数値型には「整数型(int型)」と「浮動小数点数型(float型)」「複素数型(complex型)」の3つがあります。
整数型(int型)
「1234567」のような小数点以下を持たない数値を扱う場合は整数型になります。
C言語などの他のプログラミング言語の場合は整数を扱うint型、long型、long long型などで扱える数値の範囲によって型が異なりますが、Pythonでは「整数型」として1つにまとめて扱われます。
Python2のときには整数型(int型)と長整数型(long型)で扱える数値の範囲が分けられていましたが、Python3からはPython2のlong型をint型として扱うように変更されています。
整数型で扱える値の範囲はパソコンの性能によって異なり、32bitパソコンであれば「-2,147,483,648」から「2,147,483,647」の範囲になり、64bitパソコンであれば「-9,223,372,036,854,775,808」から「9,223,372,036,854,775,807」の範囲になります。
ビット演算を行うことができるのは整数型に限ります。
以下は変数iに25000を代入し、print関数で出力するコードです。
1 2 |
i = 25000 print(i) |
実行結果
1 |
25000 |
浮動小数点数型(float型)
「1234.56789」のような小数点以下を持つ数値を扱う場合は浮動小数点数型になります。
「浮動小数点数」とは、小数点の位置が決まっていない数値を指します。反対に小数点の位置が決まっている数値のことは固定小数点数と呼びます。
浮動小数点数型はC言語のdouble型を使って実装されているため、倍精度浮動小数点数の64bitの「2.22507e-308」から「1.79769e+308」の範囲になります。
浮動小数点数型は内部的には2進数で保持されおり、10進数への変換には誤差が発生しますが、16進数への変換では誤差が発生しません。
以下は変数dに浮動小数点数を代入し、print関数で出力するコードです。
1 2 3 4 |
d = 1234.56789 print(d) d = 1.79769e+308 print(d) |
実行結果
1 2 |
1234.56789 1.79769e+308 |
複素数型(complex型)
「複素数」とは実際に存在する数である「実数」と実際には存在しない数である「虚数」を使って1つの数とした場合の呼び方を言います。
実数部分と虚数部分のどちらも浮動小数点数になります。
数値定数に’j’(小文字のジェー)または’J’(大文字のジェー)を付けると虚数として扱われます。数学の表記では虚数は小文字の’i’(アイ)を使いますがPythonでは’j’か’J’(ジェー)になるため注意が必要です。
jやJという名前の変数が既に存在している場合はそちらが有効になります。
複素数の変数から実数部分を求めるには「real」プロパティ、虚数部分を求めるには「imag」プロパティを利用します。
以下は変数kに複素数を代入し、実数部分と虚数部分をprint関数で出力するコードです。
1 2 3 |
k = 10 + 4j print(k.real) # 10.0 print(k.imag) # 4.0 |
実行結果
1 2 |
10.0 4.0 |
暗黙の型変換
整数型、浮動小数点数型の間には暗黙の型変換があります。
整数型の値に対して、小数点を持つ値の計算を行うと、その結果は浮動小数点数型として扱われます。
また、整数型の割り算を行った場合は、その結果が小数点以下があってもなくても浮動小数点数型になります。
割り算のときで整数型を維持したい場合は「//」演算子を使って、余り部分を切り捨てることを明示します。
1 2 3 4 5 6 7 8 9 |
p = 2 f = p / 2 g = p // 2 p = 2 print(type(p)) # int f = p / 2 print(type(f)) # float g = p // 2 print(type(g)) # int |
実行結果
1 2 3 |
<class 'int'> <class 'float'> <class 'int'> |
次にやること
次のページでは、数値型の基本について紹介します。
次ページ:Pythonのリスト型の基本
前ページ:Pythonの文字列型の基本