Pridobite celoštevilski in decimalni del števila hkrati z math.modf v Pythonu

Posel

S funkcijo modf() v math, standardnem modulu za matematične funkcije v Pythonu, lahko hkrati dobite celoštevilski in decimalni del števila.

V naslednjem članku si oglejte funkcijo divmod(), ki hkrati dobi kvocient in ostanek deljenja.

Pridobivanje celih in decimalnih delov brez matematičnega modula

Uporaba funkcije int() za tip float s plavajočo vejico da celoštevilsko vrednost z okrnjenim decimalnim številom. To lahko uporabimo za pridobitev celoštevilskega in decimalnega dela.

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'>

Sočasno pridobite celoštevilski in decimalni del števila s funkcijo math.modf()

S funkcijo modf() v matematičnem modulu lahko hkrati dobite celoštevilski in decimalni del števila.

Math.modf() vrne naslednjo množico Upoštevajte vrstni red, saj je decimalni del prvi.

  • (decimal, integer)
import math

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

Vsakega od njih lahko razpakiramo in pripišemo ločeni spremenljivki, kot sledi Tako celoštevilski kot decimalni del sta tipa 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'>

Znak bo enak znaku prvotne vrednosti tako za celoštevilske kot za decimalne dele.

f, i = math.modf(-1.5)

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

Velja za vrste int. V tem primeru sta tako celoštevilski kot decimalni del tipa float.

f, i = math.modf(100)

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

Z naslednjo metodo lahko preverite, ali je tip float celo število (tj. ali je desetiški del 0), ne da bi pridobili desetiški del. Glej naslednji članek.

  • float.is_integer()