Qué significa NaN en aritmética y cómo solucionarlo
Referencia del error
NaN en aritmética
Lenguaje
Severidad
MediaCuándo ocurre
NaN (Not a Number) es un valor especial IEEE 754 que se propaga silenciosamente a través de los cálculos.
Posibles soluciones
Valida la entrada numérica antes de la aritmética. Usa Number.isNaN() (no el isNaN() global) para verificar NaN ya que isNaN('') devuelve true. Siempre proporciona un valor inicial a Array.reduce(). Elimina símbolos de moneda y formato antes de parsear valores monetarios.
Errores relacionados
Más detalles
NaN (Not a Number) es un valor especial IEEE 754 que se propaga silenciosamente a través de los cálculos. Una vez que un NaN entra en un cómputo, cada resultado subsiguiente también es NaN. Se produce por operaciones numéricas inválidas como parsear cadenas no numéricas o dividir cero entre cero.
Por qué ocurre
- •Llamar a parseInt() o parseFloat() en una cadena que no comienza con un número.
- •Realizar aritmética sobre undefined (undefined + 1 === NaN).
- •Usar funciones Math con entrada no numérica (Math.sqrt(-1)).
- •Una reducción de array sin valor inicial en un array vacío.
Posibles soluciones
Valida la entrada numérica antes de la aritmética. Usa Number.isNaN() (no el isNaN() global) para verificar NaN ya que isNaN('') devuelve true. Siempre proporciona un valor inicial a Array.reduce(). Elimina símbolos de moneda y formato antes de parsear valores monetarios.
Ejemplos
Código que causa el error
const price = parseFloat("$19.99");
const tax = price * 0.2;
console.log(tax); // NaNError en la terminal
NaN
Código corregido
const raw = "$19.99";
const price = parseFloat(raw.replace(/[^0-9.]/g, ""));
if (isNaN(price)) throw new Error(`Cannot parse price: ${raw}`);
const tax = price * 0.2;
console.log(tax); // 3.998Practica en inglés
¿Cómo le explicarías un NaN in Arithmetic a un compañero dev? Elige la frase correcta:
"I hit an error...
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis