Определение того, является ли число целым или десятичным в Python

Бизнес

Определите, является ли число целым или десятичным в Python.

Следующие случаи поясняются примерами кодов.

  • Определяет, является ли число целым числом int или числом с плавающей точкой float:isinstance()
  • Определяет, является ли число типа float целым числом (0 знаков после запятой).:float.is_integer()
  • Определяет, является ли строка чисел целым числом

Чтобы получить целочисленное и десятичное значения десятичного числа, см. следующую статью.

Информацию об определении того, является ли строка числом (включая китайские цифры и т.д.), а не целым или десятичным числом, см. в следующей статье.

Определяет, является ли число целым или типом с плавающей точкой: isinstance()

Тип объекта можно получить с помощью встроенной функции type().

i = 100
f = 1.23

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

isinstance(object, type)
Эта встроенная функция может быть использована для определения принадлежности объекта к определенному типу. С ее помощью можно определить, является ли число целым или с плавающей точкой.

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

Например, функция, возвращающая true для целого числа, может быть определена следующим образом. С другой стороны, для строкового типа будет 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

Подробнее о преобразовании строк в числа читайте в следующей статье.

Подробнее об определении того, является ли строка числом (включая китайские цифры и т.д.), см. в следующей статье.

Copied title and URL