Gelijktijdig integer en decimaal deel van een getal met math.modf in Python

Bedrijf

De functie modf() van math, de standaardmodule voor wiskundige functies in Python, kan worden gebruikt om tegelijkertijd het gehele en het decimale deel van een getal te verkrijgen.

Zie het volgende artikel voor divmod(), dat tegelijkertijd het quotiënt en de rest van een deling verkrijgt.

Verkrijg gehele en decimale delen zonder wiskunde module

Toepassing van int() op een float type met drijvende komma geeft een integer waarde met de decimale punt afgekapt. Dit kan worden gebruikt om het gehele getal en het decimale deel te verkrijgen.

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

Haal integer en decimaal delen van een getal tegelijk op met math.modf()

De functie modf() in de wiskundemodule kan worden gebruikt om tegelijkertijd het gehele getal en het decimale deel van een getal te verkrijgen.

math.modf() geeft de volgende tupel terug Let op de volgorde, want het decimale deel komt eerst.

  • (decimal, integer)
import math

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

Elk kan als volgt worden uitgepakt en aan een afzonderlijke variabele worden toegewezen Zowel het gehele getal als het decimale deel zijn van het type “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'>

Het teken zal hetzelfde zijn als het teken van de oorspronkelijke waarde voor zowel het gehele getal als het decimale deel.

f, i = math.modf(-1.5)

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

Van toepassing op int-types. In dit geval zijn zowel het gehele getal als het decimale deel van het getal van het type float.

f, i = math.modf(100)

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

De volgende methode kan worden gebruikt om te controleren of een float-type een geheel getal is (d.w.z. dat het decimale deel 0 is) zonder het decimale deel te verkrijgen. Zie het volgende artikel.

  • float.is_integer()