Funkciu modf() z math, štandardného modulu pre matematické funkcie v jazyku Python, možno použiť na získanie celočíselnej a desiatkovej časti čísla súčasne.
Pozri nasledujúci článok o funkcii divmod(), ktorá súčasne získava kvocient a zvyšok delenia.
Získanie celočíselných a desatinných častí bez matematického modulu
Použitím funkcie int() na typ float s pohyblivou desatinnou čiarkou sa získa celočíselná hodnota so skrátenou desatinnou čiarkou. To možno použiť na získanie celočíselnej časti a desatinnej časti.
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'>
Získanie celočíselnej a desatinnej časti čísla súčasne pomocou funkcie math.modf()
Funkciu modf() v module math možno použiť na súčasné získanie celočíselnej a desatinnej časti čísla.
Math.modf() vráti nasledujúci tuple Všimnite si poradie, pretože desatinná časť je na prvom mieste.
(decimal, integer)
import math
print(math.modf(1.5))
print(type(math.modf(1.5)))
# (0.5, 1.0)
# <class 'tuple'>
Každú z nich možno rozbaliť a priradiť do samostatnej premennej takto Celočíselná aj desatinná časť sú typy 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'>
Znamienko bude rovnaké ako znamienko pôvodnej hodnoty pre celú aj desatinnú časť.
f, i = math.modf(-1.5)
print(i)
print(f)
# -1.0
# -0.5
Platí pre typy int. V tomto prípade sú celočíselné aj desatinné časti typu float.
f, i = math.modf(100)
print(i)
print(f)
# 100.0
# 0.0
Nasledujúca metóda môže byť použitá na kontrolu, či je typ float celé číslo (t. j. desatinná časť je 0) bez získania desatinnej časti. Pozri nasledujúci článok.
float.is_integer()