Curso de Python / Entender enteros, flotantes y conversiones numéricas

En Python, int representa enteros y float representa números de coma flotante binaria. Si necesitas reglas decimales exactas, elige unidades enteras o Decimal y especifica las unidades, la precisión y el criterio de redondeo.

Interpretar los operadores aritméticos

Expresión Operación Resultado
7 / 2 División 3.5
7 // 2 División con redondeo hacia abajo 3
7 % 2 Resto 1
2 ** 3 Potencia 8

La división // redondea hacia menos infinito; no elimina simplemente los decimales hacia cero. Por eso -7 // 2 produce -4, mientras que int(-3.5) produce -3. Si la prioridad de los operadores dificulta leer una fórmula, utiliza paréntesis que expresen la intención.

Los enteros de Python no están limitados a un rango fijo de 32 bits, aunque la memoria disponible sí es finita. Un tipo numérico tampoco decide por sí solo si un importe negativo es válido: esa regla pertenece al problema que estés resolviendo.

Ejecutar una comparación de tipos

Guarda este programa como numeric_demo.py, en UTF-8 y en la carpeta de práctica. Ejecútalo con python numeric_demo.py desde el entorno virtual del proyecto; fuera del entorno en macOS o Ubuntu, utiliza python3 si corresponde a tu instalación.

from decimal import Decimal

print(7 / 2, 7 // 2, 7 % 2)
print(-7 // 2, int(-3.5))
print(0.1 + 0.2 == 0.3)
print(Decimal("0.1") + Decimal("0.2"))
price_won = 3500
print(price_won * 3)

La salida esperada permite comparar operaciones que parecen similares, pero aplican reglas diferentes:

3.5 3 1
-4 -3
False
0.3
10500

La comparación entre 0.1 + 0.2 y 0.3 produce False por la representación binaria aproximada de esos números. No implica que la suma de enteros también sea aproximada. La explicación oficial sobre coma flotante desarrolla esta limitación.

Elegir conversión, precisión y formato

int("3500") interpreta una cadena que representa un entero. int("3.5") falla, mientras que int(3.5) recibe un flotante y trunca su parte fraccionaria. Para interpretar la cadena decimal como flotante puedes utilizar float("3.5"), teniendo presentes sus propiedades de representación.

Dar formato con dos decimales modifica lo que se muestra, no el valor almacenado. Por ejemplo, format(0.1 + 0.2, ".2f") devuelve la cadena "0.30", pero no convierte el cálculo anterior en aritmética decimal exacta.

Decimal permite trabajar con aritmética decimal. Construye los valores desde cadenas, como Decimal("0.1"), para no trasladar previamente el error de un flotante. La precisión y el redondeo siguen necesitando una política explícita, especialmente en cálculos que dividen cantidades.

Comprobar unidades y casos límite

Un gasto expresado en wones enteros puede almacenarse como 3500. En otras monedas o en unidades fraccionarias, documenta si el dato representa unidades principales o menores y cómo se redondea. Conservar un entero no basta si dos partes del programa interpretan unidades diferentes.

  1. Compara -7 // 2 con -7 / 2 y explica por qué sus resultados son distintos.
  2. Cambia el divisor por cero para observar ZeroDivisionError y después restaura el valor dos.
  3. Prueba int("3500 KRW") y comprueba por qué hace falta validar la representación de entrada.

El programa de entrada y salida muestra el punto donde un texto se transforma en un número. Al avanzar hacia el análisis de tablas con pandas, conserva también esas reglas de tipo y unidad; no elimines caracteres significativos sin definir antes qué entradas se aceptan.