Bestämma om ett tal är ett heltal eller ett decimaltal i Python

Företag

Bestäm om ett tal är ett heltal eller en decimal i Python.

Följande fall förklaras med exempelkoder.

  • Avgör om ett tal är ett heltal int eller ett flyttal float.:isinstance()
  • Bestämmer om ett tal av typen float är ett heltal (0 decimaler).:float.is_integer()
  • Fastställer om en siffersträng är ett heltal

För att få fram heltals- och decimalvärdena för ett decimaltal, se följande artikel.

I följande artikel finns information om hur du bestämmer om en sträng är ett tal (inklusive kinesiska siffror etc.) snarare än om det är ett heltal eller en decimal.

Avgör om ett tal är av typen heltal eller flyttal.: isinstance()

Ett objekts typ kan fås med den inbyggda funktionen type().

i = 100
f = 1.23

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

isinstance(object, type)
Den här inbyggda funktionen kan användas för att avgöra om ett objekt är av en viss typ. Den kan användas för att avgöra om ett tal är av typen heltal eller flyttal.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

I det här fallet bedömer den bara typen, så den kan inte avgöra om ett värde av typen float är ett heltal (med 0 som decimalpunkt) eller inte.

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Bestämmer om ett tal av typen float är ett heltal (0 decimaler).: float.is_integer()

Metoden is_integer() finns för typen float, som returnerar sant om värdet är ett heltal och falskt i annat fall.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Till exempel kan en funktion som returnerar sant för ett heltal definieras på följande sätt Å andra sidan skulle en strängtyp vara 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

Fastställer om en siffersträng är ett heltal

Om du vill avgöra om en sträng av heltalssiffror också är ett heltal kan du använda följande funktioner.

För värden som kan konverteras till float-typ med float() tillämpas metoden is_integer() efter konverteringen till float och resultatet returneras.

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

I följande artikel finns information om hur du konverterar strängar till siffror.

I följande artikel finns information om hur du bestämmer om en sträng är ett nummer (inklusive kinesiska siffror etc.).

Copied title and URL