El módulo math en Python reúne funciones matemáticas para raíces, potencias, redondeos, trigonometría, logaritmos, combinatoria y comprobaciones numéricas. Forma parte de la biblioteca estándar, por lo que no necesita instalación.
Muchas operaciones básicas pueden escribirse con operadores incorporados, pero math ofrece algoritmos claros y funciones especializadas. Es útil en cálculos científicos, geometría, estadísticas sencillas, simulaciones y validación de resultados con floats.
Importar el módulo
import math
print(math.pi)
print(math.e)La documentación oficial del módulo math describe cada función y sus restricciones.
Constantes matemáticas
El módulo proporciona varias constantes:
import math
print(math.pi)
print(math.e)
print(math.tau)
print(math.inf)
print(math.nan)pi: relación entre la circunferencia y el diámetro.e: base de los logaritmos naturales.tau: equivalente a dos veces pi.inf: infinito positivo.nan: valor numérico indefinido.
Raíz cuadrada
import math
print(math.sqrt(81))
print(math.sqrt(2))math.sqrt() espera un valor no negativo. Para números negativos, el módulo cmath trabaja con números complejos.
Potencias
Python ya posee el operador **:
print(2 ** 8)math.pow() convierte los argumentos a float:
print(math.pow(2, 8))Para enteros exactos grandes, el operador ** suele ser preferible. La guía de enteros en Python explica cómo el lenguaje representa números sin un límite fijo de dígitos.
Redondeo con floor, ceil y trunc
value = 7.8
negative = -7.8
print(math.floor(value))
print(math.ceil(value))
print(math.trunc(value))
print(math.floor(negative))
print(math.ceil(negative))
print(math.trunc(negative))floor()redondea hacia menos infinito.ceil()redondea hacia más infinito.trunc()elimina la parte decimal hacia cero.
Estos comportamientos son diferentes para números negativos. No los intercambies con int() sin revisar el requisito.
Comparar floats con isclose()
Los floats son aproximaciones binarias. Por eso una igualdad directa puede fallar:
print(0.1 + 0.2 == 0.3)Utiliza math.isclose() cuando una diferencia pequeña sea aceptable:
print(math.isclose(0.1 + 0.2, 0.3))Puedes definir tolerancias:
math.isclose(
measured,
expected,
rel_tol=1e-9,
abs_tol=1e-12,
)La guía de floats en Python explica precisión, Decimal y redondeo.
Comprobar valores especiales
values = [1.5, math.inf, math.nan, -3.0]
for value in values:
print(
value,
math.isfinite(value),
math.isinf(value),
math.isnan(value),
)No compruebes NaN con igualdad, porque nan == nan devuelve falso.
Suma precisa con fsum()
values = [0.1] * 10
print(sum(values))
print(math.fsum(values))math.fsum() reduce el error acumulado en muchas sumas de punto flotante. No convierte el cálculo en aritmética decimal exacta, pero suele mejorar el resultado.
Producto de una colección
quantities = [2, 3, 4]
print(math.prod(quantities))prod() multiplica todos los elementos. También admite un valor inicial:
print(math.prod([2, 3, 4], start=10))Máximo común divisor y mínimo común múltiplo
print(math.gcd(48, 18))
print(math.lcm(12, 18))Estas funciones son útiles para simplificar fracciones, sincronizar ciclos y resolver problemas de divisibilidad.
Factorial y combinatoria
print(math.factorial(5))
print(math.comb(10, 3))
print(math.perm(10, 3))factorial(n): producto de 1 hasta n.comb(n, k): combinaciones sin considerar el orden.perm(n, k): selecciones donde el orden importa.
Los argumentos deben ser enteros no negativos.
Logaritmos
print(math.log(math.e))
print(math.log(8, 2))
print(math.log10(1000))
print(math.log2(1024))Los logaritmos requieren valores positivos. log1p(x) calcula log(1 + x) con mejor precisión cuando x es pequeño:
print(math.log1p(1e-12))Exponenciales
print(math.exp(1))
print(math.expm1(1e-10))expm1(x) calcula e**x - 1 con mejor precisión para valores pequeños.
Trigonometría
Las funciones trigonométricas utilizan radianes:
angle_degrees = 30
angle_radians = math.radians(angle_degrees)
print(math.sin(angle_radians))
print(math.cos(angle_radians))
print(math.tan(angle_radians))Convierte de vuelta:
print(math.degrees(math.pi / 2))Las funciones inversas son asin(), acos() y atan(). Para un ángulo que respete el cuadrante, utiliza atan2(y, x).
Distancia e hipotenusa
print(math.hypot(3, 4))
point_a = (2, 3)
point_b = (8, 11)
print(math.dist(point_a, point_b))hypot() admite más dimensiones en versiones modernas. dist() calcula distancia euclidiana entre dos puntos de igual dimensión.
Ejemplo: calcular áreas
import math
def circle_area(radius):
if radius < 0:
raise ValueError("El radio no puede ser negativo")
return math.pi * radius ** 2
def sphere_volume(radius):
if radius < 0:
raise ValueError("El radio no puede ser negativo")
return 4 / 3 * math.pi * radius ** 3
print(f"Área: {circle_area(5):.2f}")
print(f"Volumen: {sphere_volume(5):.2f}")La guía de funciones en Python explica validación, parámetros y retornos.
Ejemplo: distancia entre coordenadas
import math
def distance_between(x1, y1, x2, y2):
return math.hypot(x2 - x1, y2 - y1)
print(distance_between(2, 3, 8, 11))Este cálculo puede utilizarse para juegos, geometría, gráficos y detección de proximidad. La guía de Pygame para principiantes muestra cómo aplicar coordenadas en proyectos visuales.
Ejemplo: cuota de crecimiento compuesto
import math
initial = 1000
annual_rate = 0.05
years = 10
future = initial * math.pow(1 + annual_rate, years)
print(f"Valor futuro: {future:.2f}")Este ejemplo es educativo. Los sistemas financieros reales necesitan reglas de precisión y redondeo del dominio, normalmente con Decimal.
Math frente a NumPy
math está orientado principalmente a valores individuales. NumPy trabaja con arrays completos:
import numpy as np
angles = np.array([0, np.pi / 2, np.pi])
print(np.sin(angles))Para análisis tabular y cálculos vectorizados, consulta análisis de datos con NumPy y Pandas.
Math frente a cmath
math.sqrt(-1) genera un error. Para números complejos:
import cmath
print(cmath.sqrt(-1))Errores frecuentes
- Pasar grados a funciones que esperan radianes.
- Comparar floats con igualdad exacta.
- Confundir
floor()con truncamiento. - Usar
math.pow()cuando se necesitan enteros exactos. - Calcular raíz o logaritmo fuera de su dominio.
- No comprobar NaN e infinito en datos importados.
- Utilizar math para arrays cuando NumPy sería más apropiado.
Referencia adicional
La guía oficial sobre punto flotante explica por qué muchas fracciones decimales son aproximadas.
Conclusión
El módulo math proporciona funciones fiables para raíces, redondeos, trigonometría, logaritmos, combinatoria y comprobaciones numéricas. Aprende primero sqrt(), floor(), ceil(), isclose(), pi y las conversiones de ángulos. Después incorpora fsum(), gcd(), comb() y las funciones logarítmicas según el problema.






