Określanie, czy liczba jest liczbą całkowitą czy dziesiętną w Pythonie

Biznes

Określanie, czy liczba jest liczbą całkowitą czy dziesiętną w Pythonie.

Poniższe przypadki zostały wyjaśnione za pomocą przykładowych kodów.

  • Określa, czy dana liczba jest liczbą całkowitą int czy zmiennoprzecinkową float:isinstance()
  • Określa, czy liczba typu float jest liczbą całkowitą (0 miejsc po przecinku):float.is_integer()
  • Określa, czy ciąg liczbowy jest liczbą całkowitą

Aby uzyskać wartości całkowite i dziesiętne liczby dziesiętnej, zobacz poniższy artykuł.

Informacje na temat określania, czy ciąg znaków jest liczbą (w tym cyframi chińskimi itp.), a nie liczbą całkowitą lub dziesiętną, można znaleźć w poniższym artykule.

Określa, czy liczba jest typu całkowitego czy zmiennoprzecinkowego: isinstance()

Typ obiektu można uzyskać za pomocą wbudowanej funkcji type().

i = 100
f = 1.23

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

isinstance(object, type)
Ta wbudowana funkcja może być użyta do określenia, czy obiekt jest określonego typu. Można jej użyć do określenia, czy dana liczba jest typu całkowitego czy zmiennoprzecinkowego.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

W tym przypadku ocenia tylko typ, a więc nie może ocenić, czy wartość typu float jest liczbą całkowitą (z kropką dziesiętną 0), czy nie.

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Określa, czy liczba typu float jest liczbą całkowitą (0 miejsc po przecinku): float.is_integer()

Dla typu float dostępna jest metoda is_integer(), która zwraca wartość true, jeśli wartość jest liczbą całkowitą, i false w przeciwnym przypadku.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Na przykład funkcję, która zwraca wartość true dla liczby całkowitej, można zdefiniować w następujący sposób Z drugiej strony, dla typu łańcuchowego wartość 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

Określa, czy ciąg liczbowy jest liczbą całkowitą

Aby określić, czy ciąg cyfr liczby całkowitej jest również liczbą całkowitą, można skorzystać z następujących funkcji.

W przypadku wartości, które można przekonwertować na typ float za pomocą funkcji float(), po konwersji na float stosowana jest metoda is_integer() i zwracany jest wynik.

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

Szczegółowe informacje na temat konwersji ciągów znaków na liczby znajdują się w poniższym artykule.

Szczegółowe informacje na temat określania, czy ciąg znaków jest liczbą (w tym cyframi chińskimi itp.), można znaleźć w poniższym artykule.