Afgørelse af, om et tal er et heltal eller et decimaltal i Python

Forretning

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

Copied title and URL