convertir decimales a quebrados ??????
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
.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
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
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
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
}
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
}
