Ir al contenido

Leccion 008 - Numeros en Python: int, float, precision y redondeo correcto

Trabajar con numeros parece simple hasta que aparecen centavos perdidos o comparaciones raras. Esta leccion evita esos problemas desde el inicio.

edad = 25 # int
precio = 19.99 # float
print(type(edad))
print(type(precio))
a = 10
b = 3
print(a + b) # 13
print(a / b) # 3.333...
print(a // b) # 3
print(a % b) # 1
print(0.1 + 0.2)
print((0.1 + 0.2) == 0.3)

Salida tipica:

0.30000000000000004
False

Esto no es bug de Python: es representacion binaria de decimales.

import math
print(math.isclose(0.1 + 0.2, 0.3))
precio = 19.987
print(round(precio, 2))

Para salidas de dinero, usa formato:

total = 259.5
print(f"${total:.2f}")
def total_con_iva(precio_unitario, cantidad, iva=0.22):
subtotal = precio_unitario * cantidad
total = subtotal * (1 + iva)
return round(total, 2)
print(total_con_iva(19.99, 3))

Implementa una funcion calcular_cuota(monto, meses) que:

  • Devuelva cuota mensual redondeada a 2 decimales.
  • Retorne None si meses <= 0.

Por como se representan decimales en binario. Ocurre en muchos lenguajes, no solo Python.

Como comparar decimales en Python sin errores

Sección titulada «Como comparar decimales en Python sin errores»

Usa math.isclose en lugar de comparar floats con ==.

Con round(valor, 2) o con formateo f"{valor:.2f}" para mostrarlo en pantalla.