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