JavaScript de Cero a Experto / Strings, números y fechas
Números y Math: convertir, redondear y el susto del 0.1 + 0.2
"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 0–5; el + 1 lo
sube a 1–6. 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.