Ciao amici sto facendo un semplice problema in java e mi sta mandando al manicomio, se è possibile vorrei il vostro aiuto, la traccia è questa:
Calcolate il valore di pigreco utilizzando la serie infinita
4 - 4/3 + 4/5 - 4/7 +4/9.....
Quanti termini dovete includere nel calcolo prima di arrivare a 3.14 ??
il mio codice è il seguente:
public class PiGreco {
public static void main(String[] args) {
// TODO Auto-generated method stub
// dichiara e inizializza le variabili
String prova;
String variabile;
String piGreco = "3.14";
double num = 4;
double den = 3;
double risultato = num;
int i = 1;
int contatore = 1; // variabile che conta quanti termini della serie bisogna includere
// per arrivare al risultato
// realizzo la serie (4 - 4/3 + 4/5 - 4/7 + 4/9......)
do
{
if(i % 2 == 0) // se i e' pari
risultato += (num/den);
else // altrimenti se e' dispari
risultato -= (num/den);
i++; // incremento i per ottenere l'operazione
// di somma e sottrazione
contatore++; // incremento il contatore della serie
den +=2; // incremento il denominatore di 3
variabile = Double.toString(risultato); // converto il risultato in stringa
prova = variabile.substring(0, 4);
}while(prova != piGreco); // finquando il risultato non e' 3,14, continua il ciclo
System.out.printf("Il risultato ottenuto e': %s", variabile);
System.out.printf("\nSono stati inclusi %d termini della serie.", contatore);
}
}
Una volta avviata l'esecuzione del programma, non termina più... ho controllato con il debugging erutti i calcoli vengono fatti alla perfezione, anche la conversione è corretta, approssimando la cifra a 2 valori dopo la virgola. Il problema secondo me sta nel while, continua all'infinito il ciclo, non capisce quando i due valori sono uguali.
Qualche suggerimento?
Grazie in anticipo.