Funktionen modf() i math, standardmodulen för matematiska funktioner i Python, kan användas för att få fram hela och decimala delar av ett tal samtidigt.
Se följande artikel om divmod(), som samtidigt tar fram kvoten och återstoden av en division.
Få fram heltals- och decimaldelar utan matematisk modul
Om du tillämpar int() på en floating point float-typ får du ett heltalsvärde med decimalpunkten trunkerad. Detta kan användas för att få fram heltalsdelen och decimaldelen.
a = 1.5
i = int(a)
f = a - int(a)
print(i)
print(f)
# 1
# 0.5
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
Få fram hela och decimala delar av ett tal samtidigt med math.modf()
Funktionen modf() i matematikmodulen kan användas för att samtidigt få fram heltals- och decimaldelarna av ett tal.
math.modf() returnerar följande tupel Observera ordningen, eftersom decimaldelen kommer först.
(decimal, integer)
import math
print(math.modf(1.5))
print(type(math.modf(1.5)))
# (0.5, 1.0)
# <class 'tuple'>
Var och en av dem kan packas upp och tilldelas en separat variabel på följande sätt Både heltals- och decimaldelarna är av typen float.
f, i = math.modf(1.5)
print(i)
print(f)
# 1.0
# 0.5
print(type(i))
print(type(f))
# <class 'float'>
# <class 'float'>
Tecknet kommer att vara detsamma som tecknet för det ursprungliga värdet för både heltals- och decimaldelar.
f, i = math.modf(-1.5)
print(i)
print(f)
# -1.0
# -0.5
Gäller för int-typer. I det här fallet är både heltals- och decimaldelarna float-typer.
f, i = math.modf(100)
print(i)
print(f)
# 100.0
# 0.0
Följande metod kan användas för att kontrollera om en floattyp är ett heltal (dvs. decimaldelen är 0) utan att få fram decimaldelen. Se följande artikel.
float.is_integer()