Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Funcionamiento inesperado de parseInt

Estas en el tema de Funcionamiento inesperado de parseInt en el foro de Javascript en Foros del Web. Buenas, Estaba yo probando la funcion parseInt que se supone que pasa un string a int pero hace una cosa muy rara. Si le pasamos ...
  #1 (permalink)  
Antiguo 23/03/2013, 10:12
 
Fecha de Ingreso: octubre-2009
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 0
Funcionamiento inesperado de parseInt

Buenas,

Estaba yo probando la funcion parseInt que se supone que pasa un string a int pero hace una cosa muy rara.
Si le pasamos la cadena "05" nos devuelve 5 pero si le pasamos "08" nos devuelve 0, como es esto posible o que lógica usa?

alert(parseInt("05"));
alert(parseInt("08"));

Saludos
  #2 (permalink)  
Antiguo 23/03/2013, 10:30
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Funcionamiento inesperado de parseInt

Usa parseFloat() o indica una base como segundo argumento.

Código Javascript:
Ver original
  1. parseInt("05",10);
  2. parseInt("08",10);
  3. parseFloat("05");

No sé mucho de JavaScript, me pasó hace algún tiempo.

Última edición por pzin; 23/03/2013 a las 11:51 Razón: a veces tengo diez pulgares
  #3 (permalink)  
Antiguo 23/03/2013, 10:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Funcionamiento inesperado de parseInt

Gracias Bonez,

Pero ahora veo otra cosa rara si el valor es 0 no lo toma como numérico;

if(parseInt("0","10"))
WScript.Echo("Num");
else
WScript.Echo("No Num");

Que raro no!?
  #4 (permalink)  
Antiguo 23/03/2013, 11:31
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Funcionamiento inesperado de parseInt

Algunos navegadores, si el primer caracter de la cadena es 0, utilizan el sistema octal para la conversión

utilizando el 2 parámetro (raíz) te podrias asegurar de tratar los números como decimales

Código Javascript:
Ver original
  1. alert(parseInt('05',10));
  2. alert(parseInt('08',10));

devolvería 5 y 8

De la forma que vos lo pusiste Firefox, por ejemplo te devuelve 5 y 0, en tanto IE y Chrome, 5 y 8
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 23/03/2013, 11:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Funcionamiento inesperado de parseInt

Me olvidé la segunda parte, tenés que utiliza isNaN para la verificación

Código Javascript:
Ver original
  1. if(!isNaN(parseInt("0","10"))){
  2. alert('numero');
  3. }else{
  4. alert('no numero')
  5. }
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 23/03/2013, 12:37
 
Fecha de Ingreso: octubre-2009
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Funcionamiento inesperado de parseInt

Muchas gracias a ambos, me habéis sido de una gran ayuda

Saludos
  #7 (permalink)  
Antiguo 23/03/2013, 16:00
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Funcionamiento inesperado de parseInt

un tema interesante. el olvidado parámetro redix de parseInt
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: funcion, funcionamiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:06.