How to use tonumber()?

Convertir String a Int en NodeJS: Guía Completa

28/11/2020

Valoración: 4.18 (8763 votos)

La conversión de tipos, también conocida como type casting, es un proceso fundamental en el desarrollo con JavaScript y, por extensión, con NodeJS. Consiste en transformar un valor de un tipo de dato a otro, como por ejemplo, de un string (cadena de texto) a un número. Esta operación es especialmente relevante en JavaScript, un lenguaje de tipado débil donde las variables no tienen un tipo fijo y pueden ser reasignadas con valores de diferentes tipos a lo largo de la ejecución de un programa. Comprender cómo y cuándo realizar estas conversiones de manera efectiva es clave para evitar errores sutiles y garantizar que la lógica de nuestra aplicación funcione como se espera.

En JavaScript, la conversión de tipos puede ocurrir de dos maneras: explícita o implícita. La conversión explícita, o type casting, es cuando el desarrollador intencionadamente utiliza funciones o constructores del lenguaje para cambiar el tipo de un valor. Por otro lado, la conversión implícita ocurre automáticamente cuando el motor de JavaScript infiere que una operación requiere un cambio de tipo para poder ejecutarse, como al comparar un número con un string usando el operador ==. Aunque la conversión implícita puede ser conveniente, a menudo es preferible ser explícito para mantener el código claro y predecible.

How to convert string to int in NodeJS?
5 WAYS TO CONVERT STRING TO A NUMBER IN JAVASCRIPT , parseInt() Syntax: parseInt(string, radix) ... , ParseFloat(string) Syntax parseFloat(string) ... , Urinary + Operator. This is a shorthand method for converting strings to number in javascript. ... , Number(value) ... , Math.floor() and Math.round()
Índice de Contenido

Métodos Tradicionales para Convertir String a Número

Antes de las modernizaciones introducidas en ECMAScript 6 (ES6), los desarrolladores dependían principalmente de un conjunto de funciones y operadores clásicos para realizar estas conversiones. Estos métodos siguen siendo muy utilizados y es esencial conocerlos.

1. La función parseInt()

Esta es probablemente la función más conocida para convertir una cadena de texto en un número entero. Su principal fortaleza es su capacidad para interpretar la cadena y detenerse en el primer carácter no numérico, además de permitir trabajar con diferentes bases numéricas.

Sintaxis:parseInt(string, radix)

  • string: El valor que se desea analizar y convertir. Si no es un string, se convierte automáticamente a uno usando el método toString().
  • radix (opcional): Un número entero entre 2 y 36 que representa la base del sistema numérico a utilizar (binario, octal, decimal, hexadecimal). Si se omite, el comportamiento puede variar, aunque los navegadores modernos suelen asumir la base 10 por defecto. Es una buena práctica especificar siempre el radix para evitar resultados inesperados.

Ejemplo práctico:

let input = "150px"; let numeroEntero = parseInt(input, 10); console.log(numeroEntero); // Salida: 150

parseInt() ignora los espacios en blanco iniciales y se detiene en cuanto encuentra un carácter que no puede interpretar como parte del número en la base especificada. Si el primer carácter no es convertible, devuelve NaN (Not a Number).

2. La función parseFloat()

Similar a parseInt(), pero con la capacidad de interpretar y convertir números de punto flotante (decimales).

How do you convert ascii string to integer?
The easiest way to convert a single character to the integer it represents is to subtract the value of '0' . If we take '3' (ASCII code 51) and subtract '0' (ASCII code 48), we'll be left with the integer 3 , which is what we want.

Sintaxis:parseFloat(string)

A diferencia de parseInt(), no acepta un segundo argumento para la base numérica; siempre asume base 10. Al igual que su contraparte, ignora espacios en blanco al inicio y se detiene ante el primer carácter no válido.

Ejemplo práctico:

let input = "3.1416esPI"; let numeroFlotante = parseFloat(input); console.log(numeroFlotante); // Salida: 3.1416

3. El Operador Unario +

Este es un método abreviado y muy conciso para forzar la conversión de un string a un número. Simplemente se antepone el signo + a la variable o valor de tipo string.

Ejemplo práctico:

let stringNumero = "2024"; let numeroConvertido = +stringNumero; console.log(numeroConvertido); // Salida: 2024 (tipo number) console.log(typeof numeroConvertido); // Salida: "number"

Aunque es rápido y fácil, tiene sus desventajas. A diferencia de parseInt(), no puede ignorar caracteres no numéricos al final de la cadena. Si el string contiene cualquier carácter que no sea parte de una representación numérica válida (excepto espacios al inicio/final), el resultado será NaN.

Técnicas Modernas y la Función Number()

Con la llegada de ES6 y estándares posteriores, se introdujeron métodos más robustos y predecibles para la conversión de tipos. La función constructora Number() es la opción más recomendada para una conversión de propósito general.

How to convert string to int in NodeJS?
5 WAYS TO CONVERT STRING TO A NUMBER IN JAVASCRIPT , parseInt() Syntax: parseInt(string, radix) ... , ParseFloat(string) Syntax parseFloat(string) ... , Urinary + Operator. This is a shorthand method for converting strings to number in javascript. ... , Number(value) ... , Math.floor() and Math.round()

La función Number()

Esta función intenta convertir el valor proporcionado en un número, ya sea entero o de punto flotante. Es más estricta que parseInt() o parseFloat().

Sintaxis:Number(valor)

Su comportamiento es muy completo:

  • Strings: Ignora espacios en blanco al inicio y al final. Si el string está vacío (''), devuelve 0. Soporta notación hexadecimal ('0x'), binaria ('0b') y octal ('0o'). Si el string contiene cualquier carácter no numérico (que no sea para notación científica o de base), devuelve NaN.
  • Booleanos:true se convierte en 1, y false se convierte en 0.
  • Null: Se convierte en 0.
  • Undefined: Se convierte en NaN.

Ejemplos de uso:

Number('123'); // 123 Number('12.3'); // 12.3 Number(''); // 0 Number('0xFF'); // 255 (hexadecimal) Number('100a'); // NaN (inválido) Number(true); // 1 Number(null); // 0

Tabla Comparativa de Métodos de Conversión

MétodoManejo de DecimalesSoporte de Base (Radix)Tolerancia a Caracteres no NuméricosCaso de Uso Recomendado
parseInt()No (trunca la parte decimal)Sí (muy útil)Alta (ignora caracteres al final)Extraer un número entero del inicio de un string (ej. '150px').
parseFloat()No (siempre base 10)Alta (ignora caracteres al final)Extraer un número decimal de un string (ej. '3.14rem').
Operador Unario +NoBaja (devuelve NaN si hay caracteres extra)Conversiones rápidas cuando se tiene la certeza de que el string es puramente numérico.
Number()Sí (para notación 0x, 0b, 0o)Baja (más estricto, devuelve NaN)Conversión de propósito general, validación de datos, cuando se necesita un comportamiento predecible y estricto.

Mejores Prácticas y Manejo de Errores

No basta con saber cómo convertir; es crucial saber cómo manejar los casos en que la conversión falla. Un string no válido producirá NaN, un valor especial que puede causar errores en cálculos posteriores si no se gestiona adecuadamente.

Validación con isNaN() y Number.isNaN()

Para verificar si una conversión ha fallado, puedes usar la función isNaN(). ES6 introdujo una versión más confiable, Number.isNaN(), que no intenta convertir su argumento a número antes de verificar, evitando falsos positivos.

let input = "hola"; let resultado = Number(input); if (Number.isNaN(resultado)) { console.log("La conversión falló. El input no es un número válido."); } else { console.log(`El resultado es: ${resultado}`); }

Uso de Bloques try/catch

Aunque la conversión de string a número no suele lanzar errores (devuelve NaN), en contextos más complejos como el parseo de JSON, donde una entrada malformada sí puede lanzar una excepción, los bloques try/catch son una herramienta indispensable para un manejo de errores robusto.

How do we convert string to int?
Using Integer. valueOf() method converts a String to an Integer object instead of a primitive int. We can unbox it to an int. Note: valueOf() method uses parseInt() internally to convert to integer.

Casos de Uso Prácticos en NodeJS

1. Procesamiento de Entradas de Formularios Web

En aplicaciones web con NodeJS (usando frameworks como Express), los datos de un formulario llegan como strings. Si necesitas realizar cálculos con ellos, la conversión es obligatoria.

// Suponiendo una ruta en Express.js app.post('/calcular', (req, res) => { const { precio, cantidad } = req.body; // Convertir los strings a números const precioNum = Number(precio); const cantidadNum = parseInt(cantidad, 10); // Validar la conversión if (Number.isNaN(precioNum) || Number.isNaN(cantidadNum)) { return res.status(400).send('Valores inválidos.'); } const total = precioNum * cantidadNum; res.send(`El total es: ${total.toFixed(2)}`); });

2. Parseo de Parámetros de URL (Query Strings)

Los parámetros en una URL siempre son strings. Si un parámetro representa un ID, una página o cualquier valor numérico, debe ser convertido.

// URL: /productos?pagina=2 function obtenerPagina(url) { const params = new URLSearchParams(url.search); const paginaStr = params.get('pagina'); // Convertir a número, con un valor por defecto si es nulo o inválido const pagina = parseInt(paginaStr, 10) || 1; return pagina; }

Preguntas Frecuentes (FAQ)

¿Cuál es la diferencia principal entre `parseInt()` y `Number()`?
parseInt() analiza un string hasta encontrar un carácter no numérico y solo devuelve la parte entera. Number() intenta convertir el string completo y es más estricto; si encuentra un carácter inválido, devuelve NaN. Además, Number() puede manejar decimales.
¿Por qué es importante especificar el `radix` en `parseInt()`?
Para evitar ambigüedades. Sin el radix, strings que comienzan con '0' podrían ser interpretados como octales en motores de JavaScript antiguos, llevando a errores difíciles de depurar. Especificar 10 asegura una interpretación decimal consistente.
¿Cuándo debería usar el operador unario `+`?
Es ideal para conversiones rápidas y en contextos donde tienes la certeza de que el string es una representación numérica limpia (sin caracteres adicionales). Es menos seguro para entradas de usuario no validadas.
¿Qué pasa si intento convertir un string que no es un número?
La mayoría de los métodos de conversión (parseInt, parseFloat, Number, +) devolverán el valor especial NaN (Not a Number) para indicar que la operación falló.
¿Cómo manejo números muy grandes que exceden el límite de JavaScript?
Para números que superan Number.MAX_SAFE_INTEGER, JavaScript moderno ofrece el tipo BigInt. Puedes convertir un string a BigInt usando la función BigInt(), por ejemplo: const numeroGrande = BigInt('900719925474099199');.

En conclusión, aunque la tarea de convertir un string a un número en NodeJS y JavaScript puede parecer simple, la elección del método correcto tiene un impacto significativo en la robustez y previsibilidad de tu código. Mientras que parseInt() y parseFloat() son excelentes para extraer valores numéricos de cadenas mixtas, la función Number() ofrece un enfoque más estricto y moderno, ideal para la validación de datos. Dominar estas herramientas y sus matices te permitirá escribir un código más limpio, seguro y eficiente.

Si quieres conocer otros artículos parecidos a Convertir String a Int en NodeJS: Guía Completa puedes visitar la categoría Automovilismo.

Subir