Java: Natürlichen Logarithmus Programmieren mit einer speziellen extra aufgabe?
Hallo, also die aufgabe lautet:
ich habe schon den Logarithmus programmiert und ja er klappt auch also das Ergebnis ist dem original wert sehr ähnlich, was aber nicht klappt ist, man soll ja erkennen können ab welchem Summanden der wert um weniger als 0.0023 abweicht, da hab ich das versucht mit einer if Bedingung jedoch kam da Unsinn raus die hab ich deswegen ratskommentiert hier ist mein code, wer kann helfen? :
Mit freundlichen Grüßen
3 Antworten
Math.abs(Math.log(2) - sum) < 0.0023d
Stelle an der Wert unter 0.0023 liegt ist: 217.0
0.6954460189862113
0.6931471805599453
Die sum-Variable kann kleiner oder größer als log(2) sein.
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
ok abbbeeeer die sum variable hatte ich ja schon in Math.abs version reingetan NAJA EGAL OKE ICH Versuchs programmieren ist soooooooooooooooo komplex ejjj
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.
Asoo sag doch gleich ok danke dachte aber sum könnte nie grösser log 2 sein egal hab verstanden danke BB
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)
hä aber math.log(2) ist doch immer schon positiv