Sobes.tech
Junior

¿Cómo se convierte una cadena en un número en JavaScript?

sobes.tech AI

Respuesta de la IA

En JavaScript, la conversión de cadenas a números se puede realizar de varias maneras:

  • Conversión implícita de tipos:

    • Operadores matemáticos: por ejemplo, el signo más unario + o la resta -.
    // Conversión implícita con el signo más unario
    let str = "123";
    let num = +str; // num = 123 (número)
    
    • Operaciones aritméticas: al usar operadores aritméticos, JavaScript intentará convertir los operandos a números.
    // Conversión implícita con resta
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (número)
    
  • Conversión explícita de tipos:

    • parseInt(string, radix): Convierte una cadena en un entero. Se recomienda especificar el segundo argumento radix (base del sistema numérico) para evitar comportamientos inesperados.
    // Conversión explícita con parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (entero)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (entero)
    
    • parseFloat(string): Convierte una cadena en un número de punto flotante. Analiza la cadena hasta el primer carácter no numérico o punto.
    // Conversión explícita con parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (número de punto flotante)
    
    • Number(value): Convierte cualquier valor en un número. Es un enfoque más estricto en comparación con parseInt y parseFloat. Si la cadena no puede convertirse completamente en un número, devuelve NaN.
    // Conversión explícita con Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (número)
    
    let strInvalid = "hello";
    let numInvalid = Number(strInvalid); // numInvalid = NaN
    

Diferencias y características:

Método Descripción Devuelve NaN con cadena no válida Analiza desde el principio hasta el primer no número
+string Conversión implícita con el signo más unario. NaN No (toda la cadena)
string - 0 Conversión implícita con resta. NaN No (toda la cadena)
parseInt() Analiza un entero. NaN
parseFloat() Analiza un número de punto flotante. NaN
Number() Conversión explícita. Más estricta. NaN No (toda la cadena)

La elección del método depende de la tarea específica y del formato esperado de la cadena de entrada. Number() es preferido para convertir cadenas que representan números enteros o decimales sin caracteres adicionales. parseInt() y parseFloat() son útiles para extraer valores numéricos de cadenas que contienen símbolos adicionales (por ejemplo, unidades de medida). La conversión implícita debe usarse con precaución, entendiendo su comportamiento.