Comprensión de los Números en Python
Aprende los tres tipos numéricos de Python — int, float y complex — con ejemplos aritméticos, conversión de tipos y funciones matemáticas útiles.
Python tiene tres tipos numéricos integrados: enteros (int), números de punto flotante (float) y números complejos (complex). Esta página explica cómo funciona cada tipo, cómo realizar operaciones aritméticas con ellos, errores comunes, conversión de tipos y qué funciones matemáticas ofrece la biblioteca estándar.
Números Enteros
Un entero es un número sin parte decimal — positivo, negativo o cero. En Python, los enteros tienen precisión ilimitada: no existe un tamaño máximo fijo como ocurre en C o Java. Python trabaja sin problemas con números de cientos de dígitos.
x = 10
y = -5
z = 0
# Python integers have no fixed size limit
big = 2 ** 100
print(big) # 1267650600228229401496703205376Aritmética con Enteros
Observa que / siempre devuelve un float incluso cuando el resultado es un número entero (6 / 2 da 3.0). Usa // cuando necesites un resultado entero.
Literales Enteros: Binario, Octal y Hexadecimal
Python acepta literales enteros en cuatro bases. Las cuatro crean el mismo objeto int — el prefijo solo indica a Python cómo interpretar los dígitos.
decimal = 255 # base 10 — no prefix
binary = 0b11111111 # base 2 — prefix 0b
octal = 0o377 # base 8 — prefix 0o
hexadecimal = 0xFF # base 16 — prefix 0x
print(decimal, binary, octal, hexadecimal)
# 255 255 255 255
# Convert an int back to a string in a given base
print(hex(255)) # '0xff'
print(bin(255)) # '0b11111111'
print(oct(255)) # '0o377'Verificar el Tipo
Usa type() para confirmar el tipo de un valor, o isinstance() para comprobar la pertenencia a un tipo:
print(type(42)) # <class 'int'>
print(isinstance(42, int)) # TrueNúmeros de Punto Flotante
Un float es un número con punto decimal (o exponente). Los floats de Python son valores de doble precisión IEEE 754 de 64 bits, lo que proporciona aproximadamente 15–17 dígitos decimales significativos de precisión.
x = 10.5
y = -5.2
z = 0.0
e = 1.5e3 # scientific notation — same as 1500.0Aritmética con Floats
Precisión de Punto Flotante
Debido a que los floats se almacenan en binario, algunas fracciones decimales no pueden representarse exactamente. Esto es una propiedad de la aritmética IEEE 754, no un error de Python:
print(0.1 + 0.2) # 0.30000000000000004
print(0.1 + 0.2 == 0.3) # FalseCuando la aritmética decimal exacta es importante (por ejemplo, en cálculos financieros), usa el módulo decimal de la biblioteca estándar en lugar de float.
Redondeo y Operaciones Útiles con Floats
import math
print(round(3.14159, 2)) # 3.14 — round to 2 decimal places
print(math.floor(3.7)) # 3 — largest integer <= value
print(math.ceil(3.2)) # 4 — smallest integer >= value
print(math.sqrt(16)) # 4.0 — square root
print(abs(-7.5)) # 7.5 — absolute valueNúmeros Complejos
Un número complejo tiene una parte real y una parte imaginaria. En Python (siguiendo la convención de ingeniería) la unidad imaginaria se escribe j o J, no i.
x = 10 + 5j
y = -5 + 3j
z = 0 + 0j # equivalent to complex(0, 0)
w = complex(2, -3) # constructor: real=2, imag=-3Acceder a las Partes Real e Imaginaria
z = 3 + 4j
print(z.real) # 3.0
print(z.imag) # 4.0
print(abs(z)) # 5.0 — magnitude: sqrt(3^2 + 4^2)Aritmética con Números Complejos
Los números complejos no pueden compararse con < o > porque no existe un orden natural en el plano complejo. Solo se admiten == y !=.
Conversión de Tipos
Python no promueve tipos silenciosamente en las asignaciones, pero la aritmética entre distintos tipos numéricos sigue reglas bien definidas:
| Expresión | Tipo resultante |
|---|---|
int + int | int |
int + float | float |
float + complex | complex |
int + complex | complex |
Puedes convertir entre tipos explícitamente con los constructores integrados:
# int → float
print(float(42)) # 42.0
# float → int (truncates toward zero, no rounding)
print(int(3.9)) # 3
print(int(-3.9)) # -3
# str → int or float
print(int("100")) # 100
print(float("3.14")) # 3.14
# int → complex
print(complex(5)) # (5+0j)Ten en cuenta que convertir un float a int trunca el valor — no redondea. Usa round() primero si necesitas redondear.
El Módulo math
El módulo math proporciona funciones matemáticas adicionales para números reales.
import math
print(math.pi) # 3.141592653589793
print(math.e) # 2.718281828459045
print(math.log(math.e)) # 1.0 — natural log
print(math.log10(1000)) # 3.0
print(math.pow(2, 10)) # 1024.0 — float result (use ** for int result)
print(math.factorial(5)) # 120
print(math.gcd(12, 8)) # 4Para operaciones con números complejos, usa cmath en lugar de math:
import cmath
z = 1 + 1j
print(cmath.phase(z)) # 0.7853981633974483 — angle in radians (π/4)
print(cmath.polar(z)) # (1.4142135623730951, 0.7853981633974483) — (r, θ)Cuándo Usar Cada Tipo
| Caso de uso | Tipo recomendado |
|---|---|
| Conteo, indexado, operaciones de bits | int |
| Mediciones, computación científica | float |
| Procesamiento de señales, ingeniería eléctrica | complex |
| Cálculos financieros que requieren exactitud | decimal.Decimal |
Para temas relacionados, consulta el capítulo Variables de Python para saber cómo se almacenan los números en variables, el capítulo Operadores de Python para el conjunto completo de operadores numéricos, y Casting en Python para los detalles de conversión de tipos.