Získání celočíselné a desetinné části čísla najednou pomocí math.modf v jazyce Python

Podnikání

Funkci modf() jazyka math, standardního modulu pro matematické funkce v jazyce Python, lze použít k získání celočíselné a desetinné části čísla současně.

Viz následující článek o funkci divmod(), která současně získá kvocient a zbytek dělení.

Získání celočíselných a desetinných částí bez matematického modulu

Při použití funkce int() na typ float s plovoucí desetinnou čárkou získáme celočíselnou hodnotu se zkrácenou desetinnou čárkou. Toho lze využít k získání celočíselné části a desetinné části.

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ískání celočíselné a desetinné části čísla současně pomocí funkce math.modf()

Funkci modf() v matematickém modulu lze použít k současnému získání celočíselné a desetinné části čísla.

Math.modf() vrátí následující tuple Všimněte si pořadí, protože desetinná část je na prvním místě.

  • (decimal, integer)
import math

print(math.modf(1.5))
print(type(math.modf(1.5)))
# (0.5, 1.0)
# <class 'tuple'>

Každou z nich lze rozbalit a přiřadit samostatné proměnné takto Celočíselná i desetinná část jsou 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'>

Znaménko bude stejné jako znaménko původní hodnoty pro celočíselnou i desetinnou část.

f, i = math.modf(-1.5)

print(i)
print(f)
# -1.0
# -0.5

Platí pro typy int. V tomto případě jsou celočíselná i desetinná část typu float.

f, i = math.modf(100)

print(i)
print(f)
# 100.0
# 0.0

Následující metodu lze použít k ověření, zda je typ float celé číslo (tj. desetinná část je 0), aniž by bylo nutné získat desetinnou část. Viz následující článek.

  • float.is_integer()