Foros del Web » Programación para mayores de 30 ;) » Programación General »

Cambio de base

Estas en el tema de Cambio de base en el foro de Programación General en Foros del Web. Bueno, les explico: He estado intentando hacer un script que dado un número decimal y una base menor que diez, devuelva el equivalente del número ...
  #1 (permalink)  
Antiguo 22/03/2003, 11:58
 
Fecha de Ingreso: agosto-2002
Mensajes: 139
Antigüedad: 21 años, 9 meses
Puntos: 0
Cambio de base

Bueno, les explico:
He estado intentando hacer un script que dado un número decimal y una base menor que diez, devuelva el equivalente del número decimal en la base indicada. Realicé la función en javascript y parecía funcionar sin problemas hasta que descubrí algo que aún no logro entender: realizaba bién cualquier conversión excepto la de los números que empiezan por 1.

He revisado el código y no logro entender porque ocurre esto. ¿Me echan una mano?

Aquí está el script:

function cambio_decimal(numero,base)
{
var invertido
invertido = new Array()
var indice
indice=1
var x
while (numero>=base)
{
invertido[indice]=numero%base
numero=numero/base
numero=parseInt(numero)
indice++
}
invertido[indice]=numero
numero=""
while(indice>0)
{
numero=numero+invertido[indice]
indice--
}
return numero
}
  #2 (permalink)  
Antiguo 22/03/2003, 12:29
 
Fecha de Ingreso: agosto-2002
Mensajes: 139
Antigüedad: 21 años, 9 meses
Puntos: 0
Haciendo pruebas descubrí que no solo no funciona para los número que empiezan en uno. No funciona siempre que la primera cifra del número es menor a la base, cuando esto ocurre devuelve el mismo número que dimos ocmo entrada.

Sigo sin saber porque.
Saludos.
  #3 (permalink)  
Antiguo 26/03/2003, 08:31
Avatar de Mosiah  
Fecha de Ingreso: mayo-2002
Ubicación: Vitoria - Madrid
Mensajes: 229
Antigüedad: 22 años
Puntos: 0
Hola, no estoy seguro pero creo que el fallo puede estar en que cuando haces:

while (numero>=base)

los compara como si fuesen strings. Prueba:

while (parseInt(numero)>=parseInt(base))

Suerte
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 12:48.