Lingua-e
← Errores
JavaScript

Qué significa NaN en aritmética y cómo solucionarlo

Referencia del error

NaN en aritmética

Lenguaje

JavaScript

Severidad

Media

Cuá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.

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

JavaScript

Código que causa el error

const price = parseFloat("$19.99");
const tax = price * 0.2;
console.log(tax); // NaN

Error 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.998

Practica 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