Skip to content

Controllare se un numero è intero o decimale in Python

Python

Questo articolo descrive come verificare se un numero è un intero o un decimale in Python.

  • Controlla se l’oggetto è int o float:isinstance()
  • Controlla se float è intero:is_integer()
  • Controlla se la stringa numerica è intera

Vedere il seguente articolo per come ottenere le parti frazionarie e intere.

Vedere l’articolo seguente per verificare se una stringa è un numero.

Controlla se l’oggetto è int o float:isinstance()

Puoi ottenere il tipo di un oggetto con la funzione integrata type().

i = 100
f = 1.23

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

Puoi anche controllare se un oggetto è di un tipo particolare con la funzione integrata isinstance(object, type).

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

In questo caso, poiché solo il tipo è selezionato, non è possibile verificare se il valore di float è un intero (la parte frazionaria è 0).

f_i = 100.0

print(type(f_i))
# <class 'float'>

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Controlla se float è intero:is_integer()

float ha il metodo is_integer() che produce True se il valore è un intero contrario e False in caso.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Ad esempio, una funzione che richiede True per un numero intero (int o intero float) essere definita come segue. Questa funzione provoca False per str.

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

Controlla se la stringa numerica è intera

Se si desidera che anche la stringa di numeri interi è un intero, è possibile utilizzare la seguente funzione.

Se possibile, il valore viene convertito in float con float(), quindi viene chiamato il metodo is_integer() e viene restituito il risultato.

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

Vedere i seguenti articoli per i dettagli sulla conversione di stringhe in numeri e sulla gestione delle eccezioni con try … eccetto ….