Получение целой и десятичной частей числа одновременно с помощью 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.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