この記事では、Pythonの数値型の種類と簡単な使い方を解説します。
数値型(Numeric types)とは、プログラムで数値を表現するためのデータ型です。Pythonには以下のような数値型が用意されています。
int型 | 整数値を表現するためのデータ型。整数型(Integer types)。 |
---|---|
float型 | 実数(小数点を含む数値)を表現するためのデータ型。浮動小数点数型(Floating-point types) |
complex型 | 複素数を表現するためのデータ型。複素数型(Complex type)。 |
それでは、Pythonの数値型について見ていきましょう!
数値型の種類
Pythonで主に使用する数値型には、以下のようなものがあります。
int型 | 整数を扱うためのデータ型。 |
---|---|
float型 | 浮動小数点数を扱うためのデータ型。 |
complex型 | 複素数を扱うためのデータ型。 |
int型(整数)
int
型は、integer(整数)の略で整数を扱うための型です。
有効桁数
Python 2のint
型は、C言語のlong
を使って実装されているので32ビットの精度があります。また、int
型の他に有効桁数が設けられていないlong
型がありました。
Python 3のint
型には、有効桁数が設けられておらず、整数型はint
型しかありません。
整数リテラル
小数点や指数表記を含まない数値リテラルは整数として扱われます。
print(1)
print(type(1))
実行結果
1
<class 'int'>
もちろん、変数に代入することもできる。
n = 10
print(n)
print(type(n))
実行結果
10
<class 'int'>
float型(浮動小数点数)
float
型は、「floating point number」の略で浮動小数点数を扱うための型です。
有効桁数
float
型は、基本的にC言語の倍精度浮動小数点数double
を使って実装されています。なので、精度はdouble
と同じ64ビットです。
また、sys.float_info
から精度などを確認することができます。
import sys
print(sys.float_info)
実行結果
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
浮動小数点数リテラル
小数点や指数表記を含む数値リテラルは、浮動小数点として扱われます。
print(1.0)
print(type(1.0))
実行結果
1.0
<class 'float'>
変数に代入することもできる。
pi = 3.14
print(pi)
print(type(pi))
実行結果
3.14
<class 'float'>
complex型(複素数)
complex
型は、「Complex number」の略で複素数を扱うための型です。
複素数リテラル
数値リテラルにj
、またはJ
を付けることで実部が0の虚数として扱われます。
print(1j)
print(type(1j))
実行結果
1j
<class 'complex'>
整数や浮動小数点数を加えることで実部を表現することができる。
print(2 + 1j)
print(type(2 + 1j))
実行結果
(2+1j)
<class 'complex'>
アクセス
実部をreal
、虚部をimag
からアクセスできます。
c = 2 + 1j
print(f'{c} = 実部: {c.real}, 虚部: {c.imag}')
実行結果
(2+1j) = 実部: 2.0, 虚部: 1.0
特殊な数値型
この他にもPythonには便利な数値型が用意されています。
decimal型(正確な10進数)
decimal
型は、10進数を正確に表現できる型です。コンピュータは、2進数を使って10進数を表現しているので、ちょくちょく値にブレが生じてしまいます。なので、正確に10進数を表現したい場合には、decimal
型を使います。
from decimal import Decimal
# floatを使った演算
print(1.1 + 2.2)
# decimalを使った演算
print(Decimal('1.1') + Decimal('2.2'))
実行結果
3.3000000000000003
3.3
Linkdecimal --- 十進固定及び浮動小数点数の算術演算
Fraction型(分数)
Fraction
型は、分数を扱える型となっています。
from fractions import Fraction
print(Fraction(40, -3)) # -40/3
print(Fraction('18/12')) # 3/2
print(Fraction(1.1)) # 2476979795053773/2251799813685248
from decimal import Decimal
print(Fraction(Decimal('1.1'))) # 11/10
数値型の生成と変換
文字列などの他のデータ型の値から数値型を生成することができます。また、整数から浮動小数点数に変換したり、浮動小数点数を整数に変換することもできます。
int型の生成と変換
int
型のオブジェクトを生成するには、int
型のコンストラクタint()
を使います。
s = '123'
f = 3.14
c = 1+2j
i = int(s)
print(i, type(i)) # 123 <class 'int'>
i = int(f)
print(i, type(i)) # 3 <class 'int'>
i = int(c)
print(i, type(i)) # TypeError: can't convert complex to int
float型の生成と変換
float
型のオブジェクトを生成するには、float
型のコンストラクタfloat()
を使います。
s = '3.14'
i = 1
c = 1+2j
f = float(s)
print(f, type(f)) # 3.14 <class 'float'>
f = float(i)
print(f, type(f)) # 1.0 <class 'float'>
f = float(c)
print(f, type(f)) # TypeError: can't convert complex to float
complex型の生成と変換
complex
型のオブジェクトを生成するには、complex
型のコンストラクタcomplex()
を使います。
s = '1+2j'
i = 1
f = 3.14
c = complex(s)
print(c, type(c)) # (1+2j) <class 'complex'>
c = complex(i)
print(c, type(c)) # (1+0j) <class 'complex'>
c = complex(f)
print(c, type(c)) # (3.14+0j) <class 'complex'>
# 第二引数で虚部を指定することもできる
c = complex(i, f)
print(c, type(c)) # (1+3.14j) <class 'complex'>
まとめ
この記事では、Pythonの数値型について解説しました。
難しい内容はなかったと思いますが、覚えることが多かったので忘れてしまったら読み返して徐々に慣れていってください。
数値型は演算することもできます。演算については以下の記事を参照してください。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ