Categories: Python

【Python】数値型の種類と使い方

この記事では、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

Linkfractions --- 有理数

数値型の生成と変換

文字列などの他のデータ型の値から数値型を生成することができます。また、整数から浮動小数点数に変換したり、浮動小数点数を整数に変換することもできます。

任意のオブジェクトを型変換(キャスト)する方法

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の数値型について解説しました。

難しい内容はなかったと思いますが、覚えることが多かったので忘れてしまったら読み返して徐々に慣れていってください。

数値型は演算することもできます。演算については以下の記事を参照してください。

数値型の演算と演算子一覧

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

4週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

5か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago