Pythonで数値が整数か小数かを判定

Pythonで数値が整数か小数かを判定します。 以下の場合についてサンプルコードとともに説明します。

数値が整数型intか浮動小数点型floatか判定: isinstance() float型の数値が整数(小数点以下が0)か判定: float.is_integer() 数字の文字列が整数か判定

小数の整数部と小数部の値を取得したい場合は

数値が整数型intか浮動小数点型floatか判定: isinstance()

オブジェクトの型は、組み込み関数type()で取得できます。

i = 100
f = 1.23

print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>

組み込み関数isinstance(オブジェクト, 型)を使うことでオブジェクトが特定の型かどうかを判定できます。これを利用して、数値が整数型intか浮動小数点型floatかを判定できます。

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

この場合、型を判定しているだけなので、float型の値が整数(小数点以下が0)かどうかは判定できません。

f_i = 100.0

print(type(f_i))
# <class 'float'>

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

float型の数値が整数(小数点以下が0)か判定: float.is_integer()

float型にはis_integer()メソッドが用意されており、値が整数であればTrue、そうでなければFalseを返します。

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

例えば、整数の数値(int型および整数のfloat型)に対してTrueを返す関数は以下のように定義できます。文字列str型はFalseとなります。

def is_integer_num(n):
    if isinstance(n, int):
        return True
    if isinstance(n, float):
        return n.is_integer()
    return False

print(is_integer_num(100))
# True

print(is_integer_num(1.23))
# False

print(is_integer_num(100.0))
# True

print(is_integer_num('100'))
# False

数字の文字列が整数か判定

整数の数字の文字列も整数として判定したい場合は、以下のような関数が考えられます。 組み込み関数float()でfloat型に変換できる値に対して、floatに変換後is_integer()メソッドを適用し、結果を返しています。

def is_integer(n):
    try:
        float(n)
    except ValueError:
        return False
    else:
        return float(n).is_integer()

print(is_integer(100))
# True

print(is_integer(100.0))
# True

print(is_integer(1.23))
# False

print(is_integer('100'))
# True

print(is_integer('100.0'))
# True

print(is_integer('1.23'))
# False

print(is_integer('string'))
# False
Last Updated: 6/26/2019, 10:34:03 PM