Determinar si un nombre és un nombre enter o un decimal en Python

Negocis

Determina si un nombre és un nombre enter o un decimal a Python.

Els casos següents s’expliquen amb codis d’exemple.

  • Determina si un nombre és un enter enter o un nombre flotant de coma flotant:isinstance()
  • Determina si un nombre de tipus flotant és un nombre enter (0 decimals):float.is_integer()
  • Determina si una cadena numèrica és un nombre enter

Per obtenir els valors enters i decimals d’un nombre decimal, consulteu l’article següent.

Consulteu l’article següent per obtenir informació sobre com determinar si una cadena és un nombre (inclosos números xinesos, etc.) en lloc de si és un nombre enter o decimal.

Determina si un nombre és un tipus d’enter o de coma flotant:isinstance()

El tipus d’un objecte es pot obtenir amb la funció incorporada type().

i = 100
f = 1.23

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

isinstance(object, type)
Aquesta funció integrada es pot utilitzar per determinar si un objecte és d’un tipus particular. Això es pot utilitzar per determinar si un nombre és un tipus d’enter o de coma flotant.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

En aquest cas, només jutja el tipus, de manera que no pot jutjar si un valor de tipus flotant és un nombre enter (amb un decimal de 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 nombre de tipus flotant és un nombre enter (0 decimals):float.is_integer()

El mètode is_integer() es proporciona per al tipus flotant, que retorna true si el valor és un enter i false en cas contrari.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Per exemple, una funció que retorna true per a un nombre enter es pot definir de la següent manera. D’altra banda, un tipus de cadena seria fals.

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 numèrica és un nombre enter

Si voleu determinar que una cadena de dígits enters també és un nombre enter, les funcions següents són possibles.

Per als valors que es poden convertir al tipus float amb float(), el mètode is_integer() s’aplica després de la conversió a float i es retorna el resultat.

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

Consulteu l’article següent per obtenir més informació sobre com convertir cadenes en números.

Consulteu l’article següent per obtenir més informació sobre com determinar si una cadena és un nombre (inclosos els números xinesos, etc.).