Determinare se un numero è un intero o un decimale in Python

Attività commerciale

Determinare se un numero è un intero o un decimale in Python.

I seguenti casi sono spiegati con codici di esempio.

  • Determina se un numero è un intero int o un float in virgola mobile:isinstance()
  • Determina se un numero di tipo float è un intero (0 decimali):float.is_integer()
  • Determina se una stringa di numeri è un intero

Per ottenere i valori interi e decimali di un numero decimale, vedi il seguente articolo.

Vedi il seguente articolo per informazioni su come determinare se una stringa è un numero (inclusi i numeri cinesi, ecc.) piuttosto che se è un intero o un decimale.

Determina se un numero è di tipo intero o a virgola mobile: isinstance()

Il tipo di un oggetto può essere ottenuto con la funzione built-in type().

i = 100
f = 1.23

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

isinstance(object, type)
Questa funzione integrata può essere usata per determinare se un oggetto è di un tipo particolare. Questo può essere usato per determinare se un numero è di tipo intero o a virgola mobile.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

In questo caso, giudica solo il tipo, quindi non può giudicare se un valore di tipo float è un intero (con punto decimale 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 se un numero di tipo float è un intero (0 decimali): float.is_integer()

Il metodo is_integer() è fornito per il tipo float, che restituisce true se il valore è un intero e false altrimenti.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Per esempio, una funzione che restituisce vero per un numero intero può essere definita come segue D'altra parte, un tipo di stringa sarebbe 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 se una stringa di numeri è un intero

Se volete determinare che una stringa di cifre intere sia anche un intero, sono possibili le seguenti funzioni.

Per i valori che possono essere convertiti al tipo float con float(), il metodo is_integer() viene applicato dopo la conversione in float e il risultato viene restituito.

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

Vedi il seguente articolo per i dettagli sulla conversione di stringhe in numeri.

Vedi il seguente articolo per i dettagli su come determinare se una stringa è un numero (inclusi i numeri cinesi, ecc.).