Получаване на целочислена и десетична част на число едновременно с math.modf в Python

Бизнес

Функцията modf() на math, стандартния модул за математически функции в Python, може да се използва за получаване на целочислената и десетичната част на дадено число едновременно.

Вижте следната статия за функцията divmod(), която получава едновременно коефициента и остатъка от дадено деление.

Получаване на целочислени и десетични части без математически модул

Прилагането на int() към тип float с плаваща запетая води до получаване на целочислена стойност със съкратена десетична запетая. Това може да се използва за получаване на целочислената част и на десетичната част.

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

Получаване на целочислената и десетичната част на дадено число едновременно с math.modf()

Функцията modf() в модула math може да се използва за едновременно получаване на целочислената и десетичната част на дадено число.

Math.modf() връща следния кортеж Обърнете внимание на реда, тъй като десетичната част е първа.

  • (decimal, integer)
import math

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

Всяка от тях може да бъде разопакована и присвоена на отделна променлива по следния начин И целочислената, и десетичната част са тип 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'>

Знакът ще бъде същият като знака на първоначалната стойност както за целочислената, така и за десетичната част.

f, i = math.modf(-1.5)

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

Прилага се за типове int. В този случай както целочислената, така и десетичната част са типове float.

f, i = math.modf(100)

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

Следният метод може да се използва за проверка дали тип float е цяло число (т.е. десетичната част е 0), без да се получава десетичната част. Вижте следната статия.

  • float.is_integer()
Copied title and URL