CodeForge

JavaScript de Cero a Experto / Strings, números y fechas

Números y Math: convertir, redondear y el susto del 0.1 + 0.2

Teoría20 min20 XP

"7000" + "18000" da "700018000" — texto pegado, no una suma. Todo dato que llega de un formulario, una URL o un archivo llega como STRING, y convertirlo bien a número es supervivencia básica. De paso, hoy resuelves uno de los misterios más famosos de JavaScript: por qué 0.1 + 0.2 no da 0.3.

De texto a número

Regla práctica: Number() cuando el texto DEBE ser un número limpio (y NaN te avisa que algo vino mal); parseInt/parseFloat cuando el número viene acompañado ("18000 pesos", "12.5kg"). El 10 de parseInt es la base decimal — escríbelo siempre, es un clásico de bugs históricos. Y para preguntar "¿esto es NaN?", solo Number.isNaN — porque NaN === NaN da false.

El susto: 0.1 + 0.2

Por eso "Mi Bolsillo" maneja pesos ENTEROS (18000, no 18.5): con enteros la aritmética es exacta. Es la práctica estándar en software de dinero — los sistemas de pago reales cuentan centavos enteros, nunca fracciones. Y cuando necesites mostrar decimales, toFixed — recordando que te devuelve un string listo para mostrar, no un número para seguir calculando.

La caja de herramientas Math

La fórmula del dado en cámara lenta: Math.random() da 0 a 0.999...; por 6 → 0 a 5.999...; Math.floor lo aplasta a 05; el + 1 lo sube a 16. Cambia el 6 y el 1 y tienes enteros aleatorios en cualquier rango — la verás en juegos, sorteos y datos de prueba por siempre.

Calculas el IVA de un precio y quieres mostrar 2 decimales: const iva = (precio * 0.19).toFixed(2). Más abajo haces iva + 100. ¿Qué obtienes?

Mini-reto

Cierra el pendiente de la lección pasada: parte "7000,18000,5400" con split y conviértelo en números de verdad con map + Number. Súmalos con reduce (debe dar 30400, no una monstruosidad de texto). Remata generando un "gasto sorpresa" aleatorio entre 1000 y 10000 con la fórmula del dado.

Qué sigue

Ya calculas bien. Pero mostrar 1234567 a un usuario colombiano debería verse $ 1.234.567 — con separadores de miles, símbolo y todo. Formatear eso a mano es una trampa; JavaScript trae un experto en formatos de cada país: Intl. Próxima lección: números, monedas y porcentajes en perfecto colombiano.