Cómo determinar si un número es un entero o un decimal en Python

Negocio

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.

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.).

Copied title and URL