Python
2022.01.19
Pythonのint型オブジェクトまとめ!文字列やfloat型の変換方法
2023.11.18

Pythonプログラムで整数を扱う時によく使用するint型オブジェクト。Pythonの基礎であるintについて詳しくご紹介します。



1.Pythonのint型オブジェクトとは?

Pythonのint型オブジェクトは、整数を格納したデータ型で以下のように表現できます。

my_number = 100
print(type(my_number))
print(my_number)

結果

<class 'int'>
100

int型オブジェクトは、主に計算やデータベースへ値を記録する際に使用します。


またint型オブジェクトはstr関数を使用しint型から文字列に変換したり、int関数でfloat型からint型に変換できる特徴があります。


つまり整数を文章の中で表現したり、計算で用いたり、プログラムの中で臨機応変に数値を扱えるということです。



2.int関数とは?


int関数は、文字列をint型に変更したり、float型をint型に変更できる関数です。


int()の引数に値を入れるだけで整数型に変換してくれるので、 print(int(‘1000’))などのように関数内で使用したり、int(‘100’) > 10 など演算子内で使用することも可能です。



3.int関数の使い方


int関数の基本的な使い方を3つご紹介します。

①基本構文

前の項で解説した通り、基本的な使い方は、int関数の引数に変換したいオブジェクトを指定するだけです。

int(変換したいオブジェクト)

まずは、整数を引数として渡したサンプルソースを見てみましょう。

my_number = int(100)
print(type(my_number))
print(my_number)

結果

<class 'int'>
100

int関数に整数の100を入れると、元のint型のまま出力されます。

では真偽値をint関数に入れるとどうなるでしょうか。

a = True
print(a)
print(int(a))

b = False
print(b)
print(int(b))

結果

True
1

False
0

int関数を使うことで真偽値を1と0に変換できました。

②文字列をint型に変換

文字列として扱われている数値を計算で使用したい場合などは、文字列をint型に変換する必要があります。

my_text = '100'
print(type(my_text))
print(my_text)

my_int = int(my_text)
print(type(my_int))
print(my_int)

結果

<class 'str'>
100

<class 'int'>
100

int関数に’100’を入れることで、文字列からint型に変換できました。

③float型をint型に変換

小数点を含む値を整数型に変換したい場合も、int関数を使用すると簡単に型変換ができます。

my_float = 1.5
print(type(my_float))
print(my_float)

my_int = int(my_float)
print(type(my_int))
print(my_int)

結果

<class 'float'>
1.5

<class 'int'>
1

このとき、小数点以下は切り捨てられて、整数になっていることが確認できますね。


小数点以下を四捨五入したい場合は、round関数を使用すると簡単に四捨五入が実行できます。方法についてはのちほど解説します。



4.int関数の注意点

int関数は便利な一方で、いくつか注意する必要があります。

①小数点が切り捨てになる

前項で説明した通り、float型をint関数で整数化した場合は、小数点以下の数字が切り捨てられることに注意が必要です。

以下に例を記します。

my_float = 3.64
print(type(my_float))
print(my_float)

my_int = int(my_float)
print(type(my_int))
print(my_int)

結果

<class 'float'>
3.64

<class 'int'>
3

小数点以下の.64は、int関数で切り捨てられていることが確認できます。

小数点以下を四捨五入したい場合はround関数を使う

小数点以下を四捨五入したい場合は、先ほど説明した通りround関数を使用しましょう。

my_float = 3.64
my_number_0 = round(my_float)
my_number_1 = round(my_float, 1)
my_number_2 = round(my_float, 2)
my_number_3 = round(my_float, 3)

print(type(my_number_0))
print(my_number_0)

print(type(my_number_1))
print(my_number_1)

print(type(my_number_2))
print(my_number_2)

print(type(my_number_3))
print(my_number_3)

結果

<class 'int'>
4

<class 'float'>
3.6

<class 'float'>
3.64

<class 'float'>
3.64

round関数のふたつ目の引数で小数点の桁数を指定し、四捨五入できます。第二引数がない場合(変数my_number_0)は、小数点以下表示なしで四捨五入されます。


また、元の小数点以下の桁数より大きい数(変数my_number_3)を第二引数で指定した場合は、四捨五入なしで出力されていることが確認できますね。

②小数点を含む文字列を処理するとエラーになる

小数点を含む文字列をint関数で処理すると、以下のようなエラーが発生します。

my_text_float = '3.64'
my_text_int = int(my_text_float)
print(my_text_int)

結果

ValueError: invalid literal for int() with base 10: '3.64'


段階的に型変換を行う

文字列の数字に小数点以下がある場合は、文字列からfloat型、float型からint型と段階を経て型変換を行う必要があります。

my_text_float = '3.64'
my_text_int = int(float(my_text_float))
print(my_text_int)

結果

3


余分な文字を含んでいるとエラーになる

int関数に割り当てる引数に文字が含まれているとエラーが発生します。

my_text = '32歳'
print(int(my_text))

結果

ValueError: invalid literal for int() with base 10: '32歳'


不要な文字を削除してから変換する

このような場合は、不要な文字を削除し、数字だけをint関数に割り当てれば、文字列を整数として扱えます。

my_text = '32歳'
my_text = my_text.replace('歳', '')
print(int(my_text))

結果

32



この記事をシェア