convertir decimales a quebrados ??????

duskrow
20 de Octubre del 2008
hola , estoe creando un programita en java applet , el cual consta de que ingresas una ecuacion i la resuelve , el unico problema que tengo es que el resultado me lo da en float , i algunas veces necesito que sea en quebrado , el cual no eh podido , tengo la noceon de como hacerlo en la libreta , pero con numeros chikos ejemplo :

.6 = 6/10 o 3/5

pero por ejemplo si quiero convertir un numero maior como este :

.3333333333333333333 que es igual a 1/3
cuando lo trato de convertir no puedo ,,, esmas no c como :S
espero i me puedan alludar en ese aspecto :)

thanks

viruscerbero
20 de Octubre del 2008
duskrow,

aunque no sé que tipo de ecuaciones quieres manejar con tu programa, supongo que querrás hacerlo lo más general que puedas y el pequeño problema que vas a tener al querer expresar resultados siempre como fracción es con los número irracionales.

Más que de java es un asunto de álgebra, si el resultado puede venir de una raíz no exacta, o de una función exponencial, o una función trigonométrica, por ejemplo, ¿Qué vas a hacer? No puedes expresarlo como fracción.

Como programador podrías hacer que tu código reconozca los números racionales y estos si llevarlos a fracción. Cualquier libro de álgebra te lo explica, pero mira este link para que veas de que te hablo:
http://www.darwin-milenium.com/Estudiante/Matematicas/Numeros%20Reales.htm

Lo que tienes es que mirar si es un decimal exacto o periódico.

Espero haberte ayudado.

Saludos

Heri
20 de Octubre del 2008
Checa este codigo, esta hecho en java.. espero k sea de gran ayuda

void ImprimirRes(int iTam){
int aux=iTam,Num,t=0; String saux=""; double ResAux,Denom,DA,dTermA;
String[] C=new String[6];
C[0]="Z= ";C[1]="Y= ";C[2]="X= ";C[3]="W= ";C[4]="T= ";C[5]="S= ";
for(int i=0;i<iTam;i++)
{ aux--;
for(int j=0;j<iTam;j++)
{ if(i==j)
{ ResAux=Math.rint(this.dTermInd[i]);
if(this.dTermInd[i]==ResAux)//Resultado Entero
{ saux=saux+C[aux]
+String.valueOf(this.dTermInd[i])+"n";
}
else//Si es decimal, lo convertimos a fraccion
{ Num=1;t=0;
do{
Denom=Num/(this.dTermInd[i]);
Denom=Denom*1000;Denom=Math.round(Denom);Denom=Denom/1000;

DA=(Num/Denom)*1000;dTermA=this.dTermInd[i]*1000;
DA=Math.round(DA);dTermA=Math.round(dTermA);
DA=DA/1000;dTermA=dTermA/1000;

if((DA==dTermA)&&(Math.rint(Denom)==Denom))
{ t=1;}

else
{ Num++;}

}while((Num<1000)&&(t!=1));//fin del Do-While

if(Num>=1000) //Si el numero no se pudo fraccionar entonces imprim. decimal
saux=saux+C[aux]
+String.valueOf(this.dTermInd[i])+"n";
else //Si el num. se pudo fraccionar, imp. fracciones
{
if(Denom<0) //si el denomidador fue negativo, pasarselo al numerador
{Denom=Denom*-1; Num=Num*-1;}
saux=saux+C[aux]+String.valueOf(Num)
+"/"+String.valueOf(Math.rint(Denom))+"n";
}
}
}
}
}
PEcuacion.taResultados.setText(saux); //Mostrar los resultados en el area de texto
PEcuacion.bResolver.setEnabled(false); //DESACTIVAR BOTON RESOLVER
PEcuacion.bNuevo.setEnabled(true); //Activar boton Nuevo
}