|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 225
|
[Java] Da virgola mobile a razionale
Salve a tutti, qualcuno sa come convertire un numero da virgola mobile in razionale, quindi ad esempio 0,3periodico -->1/3 ???
Grazie a tutti per l'aiuto |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
C'ho provato adesso !
Vabbeh, è C#, insomma col Java siamo lì... Codice:
lst_tentativi.Items.Clear();
lst_tentativi.Visible = false;
// numero massimo di cifre decimali da considerare
int maxNumCifreDec = 14;
string strNumero = txt_numeroinput.Text;
string[] partiNumero = strNumero.Split(',');
string strPIntNumero = partiNumero[0];
string strPDecNumero = partiNumero[1];
if (strPDecNumero.Length > maxNumCifreDec)
{
strPDecNumero = strPDecNumero.Substring(0, maxNumCifreDec);
}
double numero = Convert.ToDouble(strPIntNumero + "," + strPDecNumero);
double risTemp = 0;
string strRisTemp;
string[] partiRisultato;
string strPIntRisult;
string strPDecRisult;
double numTemp = 1;
double denomTemp = 1;
do
{
risTemp = numTemp / denomTemp;
strRisTemp = risTemp.ToString();
partiRisultato = strRisTemp.Split(',');
strPIntRisult = partiRisultato[0];
try
{
strPDecRisult = partiRisultato[1];
}
catch (Exception)
{
//throw;
strPDecRisult = "0";
}
if(strPDecRisult.Length > maxNumCifreDec)
{
strPDecRisult = strPDecRisult.Substring(0, maxNumCifreDec);
}
risTemp = Convert.ToDouble(strPIntRisult + "," + strPDecRisult);
lst_tentativi.Items.Add(numTemp + " / " + denomTemp + " = " + risTemp);
if(risTemp == numero)
{
txt_risnum.Text = numTemp.ToString();
txt_risdenom.Text = denomTemp.ToString();
break;
}
else if ( risTemp > numero )
{
denomTemp += 1;
}
else
{
numTemp += 1;
}
} while (true);
lst_tentativi.Visible = true;
txt_risnum = textbox numeratore output txt_risdenom = textbox denominatore output Riduce anche ai minimi termini... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:22.



















