Bestem, om et tal er et heltal eller et decimaltal i Python.
Følgende tilfælde er forklaret med eksempler på koder.
- Bestemmer, om et tal er et heltal int eller et flydepunktsfloat:
isinstance()
- Bestemmer, om et tal af float-typen er et heltal (0 decimaler):
float.is_integer()
- Bestemmer, om en talstreng er et heltal
For at få de hele tal og decimalværdierne for et decimaltal, se følgende artikel.
Se følgende artikel for oplysninger om, hvordan du bestemmer, om en streng er et tal (herunder kinesiske tal osv.) i stedet for om det er et heltal eller et decimaltal.
Bestemmer, om et tal er af typen heltal eller flydende komma: isinstance()
Et objekts type kan fås ved hjælp af den indbyggede funktion type().
i = 100
f = 1.23
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
isinstance(object, type)
Denne indbyggede funktion kan bruges til at bestemme, om et objekt er af en bestemt type. Den kan bruges til at afgøre, om et tal er et heltal eller et flydende tal.
print(isinstance(i, int))
# True
print(isinstance(i, float))
# False
print(isinstance(f, int))
# False
print(isinstance(f, float))
# True
I dette tilfælde vurderer den kun typen, så den kan ikke vurdere, om en værdi af typen float er et heltal (med 0 som decimalpunkt) eller ej.
f_i = 100.0
print(type(f_i))
# <class 'float'>
print(isinstance(f_i, int))
# False
print(isinstance(f_i, float))
# True
Bestemmer, om et tal af float-typen er et heltal (0 decimaler): float.is_integer()
Metoden is_integer() findes for float-typen, som returnerer sandt, hvis værdien er et heltal, og falsk i modsat fald.
f = 1.23
print(f.is_integer())
# False
f_i = 100.0
print(f_i.is_integer())
# True
En funktion, der returnerer sandt for et heltal, kan f.eks. defineres på følgende måde På den anden side ville en strengtype være falsk.
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
Bestemmer, om en talstreng er et heltal
Hvis du vil bestemme, at en streng af hele tal også er et heltal, er følgende funktioner mulige.
For værdier, der kan konverteres til float-typen med float(), anvendes is_integer()-metoden efter konverteringen til float, og resultatet returneres.
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
Se den følgende artikel for at få flere oplysninger om konvertering af strenge til tal.
Se følgende artikel for at få oplysninger om, hvordan du bestemmer, om en streng er et tal (herunder kinesiske tal osv.).