Java: Natürlichen Logarithmus Programmieren mit einer speziellen extra aufgabe?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Math.abs(Math.log(2) - sum) < 0.0023d

Stelle an der Wert unter 0.0023 liegt ist: 217.0
0.6954460189862113
0.6931471805599453
Nichtsnutz12 
Fragesteller
 08.11.2019, 15:34

hä aber math.log(2) ist doch immer schon positiv

0
colum123  08.11.2019, 15:37
@bluebird5

exakt, es wird gesagt es kann um 0.0023 in beide richtungen abweichen. da es also auch negativ abweichen kann, braucht man halt den betrag

2
Nichtsnutz12 
Fragesteller
 08.11.2019, 16:33
@colum123

ok abbbeeeer die sum variable hatte ich ja schon in Math.abs version reingetan NAJA EGAL OKE ICH Versuchs programmieren ist soooooooooooooooo komplex ejjj

0
bluebird5  08.11.2019, 16:40
@Nichtsnutz12

Naja, du solltest schon verstehen, was du da beim Programmieren machst, ansonsten kommst du nicht weiter und dann bist du im falschen Studiengang. Rumjammern hilft niemanden weiter.

Du hast geschrieben

if (Math.log(2) - Math.abs(sum) < 0.0023d) {

und an der Stelle ist das Math.abs Blödsinn, weil sum immer positiv ist. Die Differenz zwischen log(2) und sum wiederum ist nicht zwangsläufig positiv, und das meinte colum123 auch mit seinem Kommentar.

3
Nichtsnutz12 
Fragesteller
 08.11.2019, 23:18
@bluebird5

Asoo sag doch gleich ok danke dachte aber sum könnte nie grösser log 2 sein egal hab verstanden danke BB

0

Ich würde eher eine while Schleife benutzen

public static void aufgabe1() {
    double sum = 1;
    int count = 2;
    while(true) {
        if(count % 2 ==+ 0) sum -= (double)1/count;
        else sum += (double)1/count;
        if((Math.abs(sum - Math.log(2))) < 0.0023d) break;
        count++;
    }
    System.out.println(count);
}
for (double i = 2; i < 999999; i++) {

die beiden Fehler an diesem Konstrukt - keine Gleitkommazahl als Schleifenzähler und lieber while anstatt for-Schleifen wurden dir hier aber echt schon erklärt.

Und ansonsten wäre es wahrscheinlich eher

if (Math.abs(Math.log(2) - sum) < 0.0023)