Функция Python math.modf()
В численных расчётах иногда нужноотделить целую часть и дробную часть числа. Например, извлечь 3 и 0.14 из 3.14.
math.modf()— это функция, специально предназначенная для этой операции. Она возвращаетдробную часть числаицелую часть。
Определение слова: modf— сокращение от "modular fractional", означающее "дробная часть".
Базовый синтаксис и параметры
Синтаксис
import math math.modf(x)
Описание параметра
- Параметр:
x— числовое значение (или float)
Возвращаемое значение
- Возвращает кортеж
(fractional, integer) fractional: дробная часть, знак совпадает со знаком xinteger: целая часть (усечённая в сторону нуля)
Пример
Пример 1: Базовое использование
Пример
import math
result = math.modf(3.14159)
print("math.modf(3.14159) =", result)
fractional, integer = math.modf(3.14159)
print(f"Дробная часть: {fractional}, целая часть: {integer}")
result = math.modf(3.14159)
print("math.modf(3.14159) =", result)
fractional, integer = math.modf(3.14159)
print(f"Дробная часть: {fractional}, целая часть: {integer}")
Вывод:
math.modf(3.14159) = (0.14158999999999988, 3.0) 小数部分: 0.14158999999999988, 整数部分: 3.0
Пример 2: Обработка отрицательных чисел
Пример
import math
print("math.modf(-3.14) =", math.modf(-3.14))
print("math.modf(-0.5) =", math.modf(-0.5))
fractional, integer = math.modf(-3.14)
print(f"Дробная часть: {fractional}, целая часть: {integer}")
print("math.modf(-3.14) =", math.modf(-3.14))
print("math.modf(-0.5) =", math.modf(-0.5))
fractional, integer = math.modf(-3.14)
print(f"Дробная часть: {fractional}, целая часть: {integer}")
Вывод:
math.modf(-3.14) = (-0.14000000000000012, -3.0) math.modf(-0.5) = (-0.5, -0.0) 小数部分: -0.14, 整数部分: -3.0
Пример 3: Обработка целых чисел
Пример
import math
print("math.modf(5) =", math.modf(5))
print("math.modf(0) =", math.modf(0))
print("math.modf(-8) =", math.modf(-8))
print("math.modf(5) =", math.modf(5))
print("math.modf(0) =", math.modf(0))
print("math.modf(-8) =", math.modf(-8))
Вывод:
math.modf(5) = (0.0, 5.0) math.modf(0) = (0.0, 0.0) math.modf(-8) = (-0.0, -8.0)
Пример 4: Практическое применение - Разделение суммы
Пример
import math
# Разделить сумму: yuan, jiao, fen
price = 12.58
fractional, integer = math.modf(price)
yuan = int(integer)
jiao = int(fractional * 10)
fen = int((fractional * 10 - jiao) * 10)
print(f"Цена {price} юань = {yuan} юань {jiao} цзяо {fen} фэнь")
# Преобразование времени: часы в часы:минуты:секунды
hours = 73.5
fractional_hours, whole_hours = math.modf(hours)
total_minutes = fractional_hours * 60
fractional_minutes, whole_minutes = math.modf(total_minutes)
seconds = fractional_minutes * 60
print(f"{hours} часов = {int(whole_hours)} часов {int(whole_minutes)} минут {int(seconds)} секунд")
# Разделить сумму: yuan, jiao, fen
price = 12.58
fractional, integer = math.modf(price)
yuan = int(integer)
jiao = int(fractional * 10)
fen = int((fractional * 10 - jiao) * 10)
print(f"Цена {price} юань = {yuan} юань {jiao} цзяо {fen} фэнь")
# Преобразование времени: часы в часы:минуты:секунды
hours = 73.5
fractional_hours, whole_hours = math.modf(hours)
total_minutes = fractional_hours * 60
fractional_minutes, whole_minutes = math.modf(total_minutes)
seconds = fractional_minutes * 60
print(f"{hours} часов = {int(whole_hours)} часов {int(whole_minutes)} минут {int(seconds)} секунд")
Вывод:
价格 12.58 元 = 12 元 5 角 7 分 73.5 小时 = 73 时 30 分 0 秒
Примечания
- Возвращаемая целая часть имеет тип float, например 3.0 вместо 3
- Целая часть использует «усечение к нулю», что отличается от floor
- Числа с плавающей запятой имеют погрешности точности, поэтому результаты могут иметь небольшие отклонения
Другие расширения
Модуль math в Python