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