Ich würde gerne die Wurzel auf n Stellen nach dem komma selber ziehen, der Zweck ist eigentlich eher zum Üben und aus eigenem Interesse/Spaß
Ich habe nun mit Näherungswerten gearbeitet, was auch gut funktioniert hat, bis darauf, dass ab der 16. (vielleicht auf 17., weiß grad nicht mehr so genau ;P) Stelle die Nachkommazahlen aufhören, und ich damit auch aufhören muss.
Nun habe ich überlegt, dass ich auch mehrere Doubles nehmen kann, immer wenn ich das Limit einer erreicht habe, nehme ich die nächste. Nur leider ist dabei das Problem gekommen, dass ich da bei der Multiplikation zum Herausfinden, ob ich schon größer als die eigentliche Zahl bin dasselbe Problem bekommen werde und es mir somit nichts nützt...
Auch habe ich mir BigDecimal angeschaut, was mir aber mehr Sorgen als Hilfe brachte und auch begrenzt ist.
Wie kann ich es also schaffen, z.B. auch auf die 1000. Nachkommastelle ein korrektes Ergebnis zu haben?
Hier mein Algo (bitte nicht über Form etc aufregen, da ist ncoh sehr viel durcheinander; Die System.out.println()s sind zur eigenen Kontrolle, eo Fehler auftreten eingebaut)
mfg
BH16
Ich habe nun mit Näherungswerten gearbeitet, was auch gut funktioniert hat, bis darauf, dass ab der 16. (vielleicht auf 17., weiß grad nicht mehr so genau ;P) Stelle die Nachkommazahlen aufhören, und ich damit auch aufhören muss.
Nun habe ich überlegt, dass ich auch mehrere Doubles nehmen kann, immer wenn ich das Limit einer erreicht habe, nehme ich die nächste. Nur leider ist dabei das Problem gekommen, dass ich da bei der Multiplikation zum Herausfinden, ob ich schon größer als die eigentliche Zahl bin dasselbe Problem bekommen werde und es mir somit nichts nützt...
Auch habe ich mir BigDecimal angeschaut, was mir aber mehr Sorgen als Hilfe brachte und auch begrenzt ist.
Wie kann ich es also schaffen, z.B. auch auf die 1000. Nachkommastelle ein korrektes Ergebnis zu haben?
Hier mein Algo (bitte nicht über Form etc aufregen, da ist ncoh sehr viel durcheinander; Die System.out.println()s sind zur eigenen Kontrolle, eo Fehler auftreten eingebaut)
Java:
int zahl = 0;
int stellen = 0;
int aktStellen = 0;
int aktTest = 0;
double ergebnis = 0;
boolean komma = false;
Scanner scan = new Scanner(System.in);
System.out.printf("Bitte Zahl eigeben: ");
zahl = scan.nextInt();
System.out.printf("\nBitte Anzahl der Stellen nach dem Komma eingeben: ");
stellen = scan.nextInt();
System.out.printf("Die Wurzel aus %d gerundet auf %d Stellen nach dem Komma ist:\n\n", zahl, stellen);
while(aktStellen <= stellen) {
while(ergebnis*ergebnis < zahl) {
aktTest++;
ergebnis+=1.0/(double)Math.pow(10, aktStellen);
System.out.println(" + " + ergebnis);
}
if(ergebnis*ergebnis > zahl){
ergebnis-=1.0/(double)Math.pow(10, aktStellen);
System.out.println(" - " + ergebnis);
aktTest--;
}
System.out.println(aktTest + " " + ergebnis);
if(!komma){
System.out.print(",");
komma=true;
}
aktStellen++;
aktTest=0;
mfg
BH16