Una de las cosas más básicas que necesitamos aprender en cualquier lenguaje de programación, es la conversión de diferentes tipos de datos. Dado que algunos lenguajes pueden ser más relajados que otros en el tema de los tipos de datos, se vuelve necesario saber como realizarlo correctamente para evitar errores. Es por eso que en esta ocasión, trataremos este tema con un lenguaje tan popular como lo es JavaScript ¡Manos a la obra!
Tabla de Contenido
Conversión numérica entera con parseInt
Para convertir números enteros, podemos utilizar la función parseInt, esta es una función de alto nivel (es decir, propia del lenguaje) y no depende de ningún objeto. La sintaxis de esta función es la siguiente:
parseInt(String cadena, int base);
Donde:
- Cadena: Es un cadena que contenga la información que necesitamos convertir a número. Si cadena comienza por “Ox” se infiere que se trata de un número hexadecimal, si comienza con “0” se infiere que es octal y si comienza con cualquier otro número se infiere que es decimal. A menos que la base diga lo contrario.
- Base: Es la base numérica a utilizar, siendo:
- 10 – Decimal
- 2 – Binario
- 16 – Hexadecimal
- 8 – Octal
Pongamos esto a prueba, creando 4 números diferentes:
let hexadecimal = "0x00AAFF";
let octal = "045";
let binario = "10101";
let decimal = "5420";
Los convertimos y enviamos la salida a la consola.
console.log(parseInt(hexadecimal, 16));
console.log(parseInt(octal, 8));
console.log(parseInt(binario, 2));
console.log(parseInt(decimal, 10));
Y obtenemos estos resultados:
Si la base de un número es incorrecta o el valor de cadena no comienza con un número, la función regresará el valor NaN (Not a Number), por ejemplo:
let nonumero = "P0x0010AA";
console.log(parseInt(nonumero, 16));
Produce:
Esto se debe a que los valores hexadecimales no incluyen la letra P en sus elementos.
Conversión decimal con parseFloat
Igual que parseInt, la función parseFloat es una función de alto nivel, y no depende de ningún objeto. En este caso, es necesaria para hacer conversiones decimales. Su sintaxis incluye un único elemento.
parseFloat(String cadena);
Siendo esta cadena, un texto que contenga un valor decimal, ya sea positivo o negativo, por ejemplo:
let flotante = "22.356";
let negativo = "-134.67";
Son dos valores flotantes válidos, así que la salida:
console.log(parseFloat(flotante));
console.log(parseFloat(negativo));
Produce:
Sin embargo, la función parseFloat, puede producir diferentes resultados si el valor que le damos no esta construido de manera correcta. Por ejemplo, si el primer carácter de la cadena no es un elemento válido como un número, un signo + o –
let raro1 = "p103.33";
console.log(parseFloat(raro1));
Entonces produce un NaN.
Otro caso curioso, es cuando el carácter no válido se encuentra en medio de la cadena.
let raro2 = "103p1.33";
console.log(parseFloat(raro2));
En dicho caso, abortará la conversión hasta esa posición.
Lo mismo sucede cuando la cadena contiene más de un punto decimal en su interior:
let raro3 = "1031.33.54";
console.log(parseFloat(raro3));
Es decir, se abortará la conversión hasta el primer punto decimal.
Por último, imaginemos que obtuvimos un decimal con un módulo demasiado grande.
let raro4 = "103.8989898989898989893232323";
console.log(parseFloat(raro4));
Lo que sucederá es que el número perderá precisión y se recortará:
Es importante mencionar que, esta función puede regresar el valor Infinity si el número proporcionado es demasiado grande.
Conversión numérica con operador unario
Una manera mucho más rápida de hacer esto, es con el operador unario +, este operador se debe colocar al principio de la variable con una cadena numérica válida. Por ejemplo, si tenemos estos dos números:
let enterounario = "8950";
let flotanteunario = "152.36";
Para convertirlos, sólo hay que añadir el + a su salida:
console.log(+enterounario);
console.log(+flotanteunario);
¡Y funciona muy bien!
Conversión numérica con el constructor Number
Otra forma similar, es utilizar el constructor Number, el cual se puede usar de manera directa sobre una cadena y sin necesidad de funciones adicionales. Por ejemplo:
let numberEntero = "450";
let numberFlotante = "548.254";
Si lo enviamos a la salida con Number:
console.log(Number(numberEntero));
console.log(Number(numberFlotante));
Produce:
Y eso es todo por ahora ¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.
Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.