Error en parseInt de JavaScript y JScript
18 agosto 2007 – 2:14Al convertir una cadena texto a numérico con la función de JavaScript parseInt existe un pequeño error cuando la cadena empieza por “0″, por ejemplo:
[script]
siete = parseInt(“7″) // nos devuelve 7
sieteb = parseInt(“07″) // nos devuelve 7ocho = parseInt(“8″) // nos devuelve 8
ochob = parseInt(“08″) // nos devuelve 0 !!nueve = parseInt(“9″) // nos devuelve 9
nueveb = parseInt(“09″) // nos devuelve 0 !![/script]
Este error afecta tanto a JavaScript como a JScript(asp) y parece ser que al comenzar la cadena por “0″ cambia a base Octal dando ”0″ al convertir 8 y 9 que no existen en esa base. El problema es bastante significativo al tratar fechas estilo dd/mm/aaaa, descomponer dicha cadena en día, mes y año para después convertirla en número. De esta manera Agosto y Septiembre (“08″ y “09″) serían 0 en vez de 8 y 9.
La solución es añadir la base en la que debe trabajar la función parseInt. Para ello basta con añadir ”10″ a la función de la siguiente manera:
[script]
ocho = parseInt(“08″,10) // Ahora devuelve 8, quedando definitivamente solucionado este “Bug”
[/script]

11 Comentarios en “Error en parseInt de JavaScript y JScript”
el comamdo correcto es:
parseInt(s, [base])
Nunca lo habia utilizado solo con la cadena a convertir. Creo que es una casualidad que funcione hasta el numero 7.
Por Cristian el 15/12/2007
No es una casualidad que funcione hasta el 7. Los números en base 10 y en base 8 tienen la misma representación hasta el 7.
Por Amkhara el 07/05/2008
Si no es por este blog, hubiera muerto tratando de encontrar la solución. Mil gracias, estos son los aportes que valen la pena.
Por Felixonca el 26/06/2008
Casualmente me he encontrado con este numero 0648000184632 que me lo convierte en un 52. Añadiendo el segundo parametro, 10, ha quedado solucionado.
Deduzco que se debe a los numeros que empiezan por 0.
Por NRG el 07/07/2008
Gracias por el aporte, me ué de mucha ayuda
Por Marino el 25/07/2008
gracias, ya me estaba rompiendo a cabeza jajaja
Por dach el 30/10/2008
gracias ya no sabia q hacer
Por Petter02 el 28/11/2008
applause!
muchas gracias!!
Por jorge el 03/12/2008
Increible… vaya bug!!!!!!
Muchísimas gracias, me estaba volviendo loco…
Por Jesus el 10/03/2009
Gracias por solucionar mi problema
Por Fabian Altamirano el 16/03/2009
Hola.
No es un bug de la función javascript, es un error del programador que no se ha leido como se usa la función parseInt de javascript y no sabe como funciona jeje.
La explicación es tan sencilla como la siguiente:
parseInt tiene como parámetros una cadena (la que se va a convertir) y la base que es la que se usa para convertir el numero y que es opcional.
Y aqui viene la historia:
1º- Si no se especifica el parámetro base, y la cadena a convertir empieza por 0x, la función convierte la cadena a un número en base HEXADECIMAL.
2º- Si no se especifica el parámetro base, y la cadena a convertir empieza por 0, la función convierte la cadena a un número en base OCTAL.
Por eso
ochob = parseInt(”08″) // nos devuelve 0 (normal porque en base octal no hay 8 xD).
3º – En el resto de los casos si no se especifica el parámetro base, convierte a base DECIMAL.
Eso es todo, no se trata de ningun bug !
Por Carlos el 02/04/2009