En JavaScript, hay varias formas de convertir un string a un número. A continuación, se presentan algunas de las más comunes, cada una con sus propias características y casos de uso.
Contenidos
Operador Unario ‘+’
Esta es una forma rápida y concisa de convertir un string a un número. Si el string no puede ser convertido, devuelve NaN
(Not a Number).
let str = "123";
let num = +str;
console.log(num); // 123
Función Global ‘Number’
Es una forma explícita de convertir un valor a un número. Si el valor no puede ser convertido, devuelve NaN
.
let str = "123";
let num = Number(str);
console.log(num); // 123
Función ‘parseInt’
Convierte un string a un entero. Puedes especificar una base (por ejemplo, base 10 para decimal). Si encuentra un carácter que no es un número, se detiene y devuelve el número hasta ese punto.
let str = "123.456";
let num = parseInt(str, 10);
console.log(num); // 123
Función ‘parseFloat’
Convierte un string a un número flotante.
let str = "123.456";
let num = parseFloat(str);
console.log(num); // 123.456
¿Cuál es el recomendable en cada caso?
- Operador Unario
+
y Función GlobalNumber
: Estos dos métodos son muy similares en comportamiento. Ambos convierten el string a su equivalente numérico. Si el string no representa un número válido, devolveránNaN
. Estos métodos son útiles cuando esperas que el string represente completamente un número. - Funciones
parseInt
yparseFloat
: Estos métodos son útiles cuando el string contiene caracteres adicionales y solo deseas extraer la parte numérica inicial. Por ejemplo,parseInt("123abc", 10)
devolverá123
.
Consejo: Siempre es una buena práctica manejar los casos en los que obtienes NaN
después de una conversión, para asegurarte de que tu código se comporte correctamente ante datos inesperados.
Finalmente, la elección del método depende del contexto y de lo que esperes del string de entrada. Si estás seguro de que el string contiene un valor numérico y quieres una conversión directa, Number
o el operador unario +
son buenas elecciones. Si estás tratando con strings que podrían tener caracteres no numéricos y solo te interesa la parte numérica, parseInt
o parseFloat
podrían ser más adecuados.