Función math.modf() de Python
En el cálculo numérico, a veces necesitamosseparar la parte entera y la parte fraccionaria de un número. Por ejemplo, extraer 3 y 0.14 de 3.14.
math.modf()es la función especialmente diseñada para realizar esta operación; devuelve una tupla que contiene la partefraccionariayy entera del número。
Definición de la palabra: modfEs la abreviatura de "modular fractional", que significa "parte fraccionaria".
Sintaxis básica y parámetros
Formato de sintaxis
import math math.modf(x)
Descripción de parámetros
- Parámetros:
x- Número (entero o flotante)
Valor de retorno
- Devuelve una tupla
(fractional, integer) fractional: la parte fraccionaria, con el mismo signo que xinteger: la parte entera (truncamiento hacia cero)
Ejemplos
Ejemplo 1: Uso básico
Ejemplo
import math
result = math.modf(3.14159)
print("math.modf(3.14159) =", result)
fractional, integer = math.modf(3.14159)
print(f"Parte fraccionaria: {fractional}, parte entera: {integer}")
result = math.modf(3.14159)
print("math.modf(3.14159) =", result)
fractional, integer = math.modf(3.14159)
print(f"Parte fraccionaria: {fractional}, parte entera: {integer}")
Resultado de ejecución:
math.modf(3.14159) = (0.14158999999999988, 3.0) 小数部分: 0.14158999999999988, 整数部分: 3.0
Ejemplo 2: Manejo de números negativos
Ejemplo
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"Parte fraccionaria: {fractional}, parte entera: {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"Parte fraccionaria: {fractional}, parte entera: {integer}")
Resultado de ejecución:
math.modf(-3.14) = (-0.14000000000000012, -3.0) math.modf(-0.5) = (-0.5, -0.0) 小数部分: -0.14, 整数部分: -3.0
Ejemplo 3: Manejo de enteros
Ejemplo
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))
Resultado de ejecución:
math.modf(5) = (0.0, 5.0) math.modf(0) = (0.0, 0.0) math.modf(-8) = (-0.0, -8.0)
Ejemplo 4: Aplicación práctica - Separación de cantidades de dinero
Ejemplo
import math
# Separar la cantidad: 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"Precio {price} yuan = {yuan} yuan {jiao} jiao {fen} fen")
# Conversión de tiempo: horas a h:min:s
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} horas = {int(whole_hours)} h {int(whole_minutes)} min {int(seconds)} s")
# Separar la cantidad: 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"Precio {price} yuan = {yuan} yuan {jiao} jiao {fen} fen")
# Conversión de tiempo: horas a h:min:s
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} horas = {int(whole_hours)} h {int(whole_minutes)} min {int(seconds)} s")
Resultado de ejecución:
价格 12.58 元 = 12 元 5 角 7 分 73.5 小时 = 73 时 30 分 0 秒
Notas
- La parte entera devuelta es de tipo flotante, como 3.0 en lugar de 3.
- La parte entera utiliza el "redondeo hacia cero" (truncamiento), a diferencia de floor.
- Los números de punto flotante tienen errores de precisión; los resultados pueden tener ligeras desviaciones.
Otras extensiones
Módulo math de Python