Javascript: convertir una string en un número.

La función parseFloat() de Javascript nos permite recoger un dato de tipo string y convertirlo en un número con decimales, mientras que la función parseInt() nos devuelve un entero. ¿Así de simple? Sí, pero con matices. Vamos a profundizar un poco:

En el caso de parseInt() se trata de una función que recibe dos valores: el primero es obligatorio y es la cadena que queremos convertir a entero, el segundo sería un entero entre 2 y 36 para definir la base en que queremos que esté representado el entero devuelto, y es un parámetro opcional que por defecto tomará el valor 10 (base decimal). En implementaciones en navegadores antiguos (por ejemplo IE8) si el número empieza por 0 lo devolverá en base octal, así que ojo. Con los navegadores modernos ya no pasa, pero es importante recordarlo. Si le pasamos una cadena con espacios los obviará y devolverá el número (si hay varios números devolverá el primero que se encuentre). Si le pasamos una cadena con letras y números dependerá de la posición del número: si este está al inicio entonces devolverá el número hasta que encuentre un caracter extraño. Si empieza por letras devolverá un valor NaN. Ejemplos:

parseInt("10"); //devuelve 10
parseInt("10 años"); //devuelve 10
parseInt("10 54"); //devuelve 10
parseInt("10.50"); //devuelve 10
parseInt("casi 10"); //devuelve NaN
parseInt("10",16); //devuelve 16

Si quieres evitar problemas y que te devuelva un 0 cuando el resultado sea NaN ya te lo contamos en su día por aquí.

En el caso de parseFloat() la función sólo recibe la cadena que debe convertir a número decimal. Al igual que parseInt() si recibe una cadena con espacios los ignorará para devolver el número, y si recibe una cadena con caracteres actuará también igual que esa función: si este está al inicio entonces devolverá el número hasta que encuentre un caracter extraño. Si empieza por letras devolverá un valor NaN. En este caso ojo al formato numérico, sólo acepta el anglosajón. Es decir, el separador decimal tiene que ser un punto, interpretará la una coma como un caracter extraño.

parseFloat("10"); //devuelve 10
parseFloat("10.5 años"); //devuelve 10.5
parseFloat("10 54"); //devuelve 10
parseFloat("10.50"); //devuelve 10.50
parseFloat("casi 10.4"); //devuelve NaN
parseFloat("1.000,33"); //devuelve 1
parseFloat("10,50"); //devuelve 10

Entonces ¿qué hago si tengo una cadena donde los decimales vienen separados por comas y los miles marcados con puntos? Pues usando la función replace(). Vamos con un ejemplo:

var strEx = "1.000,33";
//primer paso: fuera puntos
strEx = strEx.replace(".","");
//cambiamos la coma por un punto
strEx = strEx.replace(",",".");
//listo
var numFinal = parseFloat(strEx);

Podría ser útil tener una función creada ya para realizar esta operación de conversión.

Y hasta aquí con esta entrada de Javascript básico.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s