Infinity ausgegeben

morry329

Mitglied
Hallo zusammen, ich wollte als sehr kleines Hobbyproject Cosinus mit Java berechnen. Hier mein Code
Java:
public class Cos {
    public static void main(String[] args) {
        double PI = Math.PI;
        double cosValue = 0.0;
        double toleranz = 0.00001; //Genauigkeit erhöhen
        int maxIteration = 1000;
        for(int i = 0; i < maxIteration; i++){
            double term = Math.pow(-1, i) * Math.pow(PI, 2*i) / factorial(2*i); //Cos-Formular ins Java übersetzen
            System.out.println("was los? " + term); //Debug
            cosValue += term;

            if(Math.abs(term) < toleranz){ //Stoppkriterium für For-Schreife
                break;
            }
        }
        System.out.println("cos( " + PI + " ) = " + cosValue); //Ergebnis ausgeben
    }

    public static double factorial(int potenz){
        double result = 1;
        for(int i = 2; i <= potenz; i++){
            result *= 1;
        }
        return result;
    }
}

Es klappt noch nicht, da der Code immer
Code:
Infinity
bei "was los" ausdrückt. Dementsprechend ist so ausdrücken "cos = NaN".
Kann jemand mir eine Hilfsstellung geben?
 
Ich sehe ein zwei Punkte:
  • Fließkommaoperationen sind immer Fehlerbehaftet - bei 1000 Iterationen kann sich das schnell aufschaukeln
  • Deine factorial Funktion sieht falsch aus. Die kannst du auch einfach mit return 1 ersetzen. Du rechnest da 1*1*1*1...
 

Zurück
Oben