Determinar si un número es un entero o un decimal en Python.
Los siguientes casos se explican con códigos de ejemplo.
- Determina si un número es un entero int o un flotante de punto flotante:
isinstance()
- Determina si un número de tipo float es un entero (0 decimales):
float.is_integer()
- Determina si una cadena de números es un entero
Para obtener los valores enteros y decimales de un número decimal, consulte el siguiente artículo.
- RELACIONADO:Obtener las partes enteras y decimales de un número al mismo tiempo con math.modf en Python
Consulte el siguiente artículo para obtener información sobre cómo determinar si una cadena es un número (incluidos los números chinos, etc.) en lugar de si es un entero o un decimal.
Determina si un número es de tipo entero o de coma flotante: isinstance()
El tipo de un objeto puede obtenerse con la función incorporada type().
i = 100
f = 1.23
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
isinstance(object, type)
Esta función incorporada puede utilizarse para determinar si un objeto es de un tipo determinado. Puede utilizarse para determinar si un número es de tipo entero o de punto flotante.
print(isinstance(i, int))
# True
print(isinstance(i, float))
# False
print(isinstance(f, int))
# False
print(isinstance(f, float))
# True
En este caso, sólo juzga el tipo, por lo que no puede juzgar si un valor de tipo float es un entero (con punto decimal 0) o no.
f_i = 100.0
print(type(f_i))
# <class 'float'>
print(isinstance(f_i, int))
# False
print(isinstance(f_i, float))
# True
Determina si un número de tipo float es un entero (0 decimales): float.is_integer()
El método is_integer() se proporciona para el tipo float, que devuelve true si el valor es un entero y false en caso contrario.
f = 1.23
print(f.is_integer())
# False
f_i = 100.0
print(f_i.is_integer())
# True
Por ejemplo, una función que devuelve verdadero para un número entero puede definirse de la siguiente manera Por otro lado, un tipo de cadena sería falso.
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
Determina si una cadena de números es un entero
Si desea determinar que una cadena de dígitos enteros es también un número entero, son posibles las siguientes funciones.
Para los valores que se pueden convertir a tipo float con float(), el método is_integer() se aplica después de la conversión a float y se devuelve el resultado.
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
Consulte el siguiente artículo para obtener detalles sobre la conversión de cadenas a números.
Consulte el siguiente artículo para obtener detalles sobre cómo determinar si una cadena es un número (incluidos los números chinos, etc.).