Sobes.tech
Junior

Comment convertir une chaîne en nombre en JavaScript?

sobes.tech IA

Réponse de l'IA

En JavaScript, la conversion de cadenas en números se puede realizar de varias maneras:

  • Conversiones implícitas 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 en números.
    // Conversión implícita con resta
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (número)
    
  • Conversiones explícitas 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.