Pythonで数値が整数か小数か判定する方法|型・値の判定をわかりやすく解説
Pythonでは、数値が「整数なのか」「小数なのか」を判定したいケースがあります。
たとえば、変数に入っている値が 10 なのか 10.5 なのかを判定したり、10.0 のような「小数型だけれど値としては整数」の数値を判定したりする処理です。
この記事では、Pythonで数値が整数か小数かを判定する方法を、初心者向けにわかりやすく解説します。
Pythonで整数か小数かを判定する基本
Pythonでは、整数は int 型、小数は float 型として扱われます。
num1 = 10
num2 = 10.5
print(type(num1))
print(type(num2))
実行結果は次のようになります。
<class 'int'>
<class 'float'>
そのため、isinstance() を使えば整数か小数かを判定できます。
num = 10
if isinstance(num, int):
print("整数です")
elif isinstance(num, float):
print("小数です")
実行結果:
整数です
isinstance()で整数か小数か判定する
Pythonで数値の型を判定する場合、isinstance() を使う方法がおすすめです。
num = 12.5
if isinstance(num, int):
print("整数です")
elif isinstance(num, float):
print("小数です")
実行結果:
小数です
isinstance()の基本構文
isinstance(値, 型)
たとえば、次のコードでは 10 が int 型かどうかを判定しています。
print(isinstance(10, int))
print(isinstance(10.5, int))
実行結果:
True
False
小数についても同様に判定できます。
print(isinstance(10.5, float))
print(isinstance(10, float))
実行結果:
True
False
type()を使って判定する方法
type() を使って整数か小数かを判定することもできます。
num = 10.5
if type(num) == int:
print("整数です")
elif type(num) == float:
print("小数です")
実行結果:
小数です
ただし、通常は type() よりも isinstance() を使うほうが柔軟です。
type()とisinstance()の違い
num = 10
print(type(num) == int)
print(isinstance(num, int))
どちらも True になります。
ただし、クラスの継承関係などを考慮すると、isinstance() のほうがPythonでは一般的な型判定方法です。
そのため、型を判定するときは次の書き方をおすすめします。
isinstance(num, int)
「10.0」は整数?小数?
ここはPythonで数値を判定するときに注意したいポイントです。
num = 10.0
この値は、数学的には整数ですが、Pythonでは float 型です。
print(type(10.0))
実行結果:
<class 'float'>
したがって、次のコードは False になります。
print(isinstance(10.0, int))
一方、次のコードは True です。
print(isinstance(10.0, float))
つまり、「値が整数か」と「データ型が整数か」は別の話です。
10.0のような数値を「整数」と判定する方法
「10.0はfloat型だけれど、小数部分が0なので整数として扱いたい」という場合があります。
この場合は is_integer() が便利です。
num = 10.0
if num.is_integer():
print("整数として扱えます")
else:
print("小数です")
実行結果:
整数として扱えます
一方、10.5 の場合は次のようになります。
num = 10.5
if num.is_integer():
print("整数として扱えます")
else:
print("小数です")
実行結果:
小数です
is_integer()とは
is_integer() は、float の値に小数部分が存在するかを判定するメソッドです。
print(10.0.is_integer())
print(10.5.is_integer())
実行結果:
True
False
整数と小数をまとめて判定する
「整数型なら整数、小数型なら小数」と単純に判定するなら、次のように書けます。
num = 10.5
if isinstance(num, int):
print("整数")
elif isinstance(num, float):
print("小数")
else:
print("数値ではありません")
実行結果:
小数
float型の「10.0」も整数と判定する
「10」と「10.0」の両方を整数として判定したい場合は、少し処理を変えます。
num = 10.0
if isinstance(num, int):
print("整数")
elif isinstance(num, float) and num.is_integer():
print("整数")
else:
print("小数")
実行結果:
整数
複数の数値をまとめて判定することもできます。
numbers = [10, 10.0, 10.5, 20.0, 20.25]
for num in numbers:
if isinstance(num, int):
print(num, "→ 整数")
elif isinstance(num, float) and num.is_integer():
print(num, "→ 整数")
else:
print(num, "→ 小数")
実行結果:
10 → 整数
10.0 → 整数
10.5 → 小数
20.0 → 整数
20.25 → 小数
割り算の結果が整数か小数か判定する
Pythonでは、通常の / を使った割り算の結果は float になります。
num = 10 / 2
print(num)
print(type(num))
実行結果:
5.0
<class 'float'>
値としては 5 ですが、型は float です。
このような場合に is_integer() を使うことができます。
num = 10 / 2
if num.is_integer():
print("整数です")
else:
print("小数です")
実行結果:
整数です
剰余演算子で小数部分を判定する方法
数値の小数部分があるかどうかは、剰余演算子 % を使って判定することもできます。
num = 10.5
if num % 1 == 0:
print("整数")
else:
print("小数")
実行結果:
小数
10.0 の場合は次のようになります。
num = 10.0
if num % 1 == 0:
print("整数")
else:
print("小数")
実行結果:
整数
ただし、単純に float の小数部分を判定するのであれば、is_integer() のほうが意図が明確です。
文字列の「10」「10.5」を判定する場合
注意したいのが、入力フォームや input() から受け取った数値です。
input() の戻り値は文字列です。
num = input("数値を入力してください:")
print(type(num))
例えば 10 と入力すると、次のようになります。
<class 'str'>
そのため、次のような判定はできません。
num = input("数値を入力してください:")
if isinstance(num, int):
print("整数")
input() の結果を数値に変換する必要があります。
整数として変換する場合
num = int(input("整数を入力してください:"))
小数として変換する場合
num = float(input("小数を入力してください:"))
「入力された文字列が整数なのか小数なのかわからない」という場合は、float() を利用する方法があります。
text = input("数値を入力してください:")
try:
num = float(text)
if num.is_integer():
print("整数です")
else:
print("小数です")
except ValueError:
print("数値ではありません")
10 と入力すると、
整数です
10.5 と入力すると、
小数です
と判定できます。
Pythonで整数か小数かを判定する方法まとめ
Pythonで数値が整数か小数かを判定する方法には、いくつかあります。
| 判定方法 | 用途 |
|---|---|
isinstance(num, int) |
int型か判定 |
isinstance(num, float) |
float型か判定 |
type(num) == int |
型を厳密に判定 |
type(num) == float |
float型を厳密に判定 |
num.is_integer() |
floatの値が整数か判定 |
num % 1 == 0 |
小数部分があるか判定 |
特に覚えておきたいのは、「型を判定する」のか「数値として整数かを判定する」のかを区別することです。
例えば、
num = 10.0
の場合、
isinstance(num, int)
は False ですが、
num.is_integer()
は True です。
つまり、10.0 は型としてはfloat型だが、値としては整数です。
まとめ
Pythonで数値が整数か小数か判定する場合、目的によって方法を使い分けるのがポイントです。
データ型を判定したい場合は、isinstance() を利用します。
if isinstance(num, int):
print("整数型")
elif isinstance(num, float):
print("小数型")
値として整数か判定したい場合は、is_integer() が便利です。
if num.is_integer():
print("整数")
else:
print("小数")
Python初心者の場合は、int・floatというデータ型の違いと、「10.0のようにfloat型でも整数として扱える値」があることを理解しておくと、数値処理でのミスを減らせます。
この記事のポイント
- Pythonの整数は
int、小数はfloatとして扱われる - 型を判定するなら
isinstance()が便利 10.0はfloat型だが、値としては整数- floatの値が整数かどうかは
is_integer()で判定できる input()の戻り値は文字列なので、数値に変換してから判定する







