Was könnte passieren, wenn Sie eine größere Genauigkeit verlangen als Variable mit doppelter Genauigkeit besitzen?
Zum Beispiel, angenommen FASTNULL
wäre 1.0E-21?
Die Schleife endet, wenn sie das Ergebnis erreicht hat. Wenn das Ergebnis nicht erreicht werden kann, könnte die Schleife endlos weitergehen. Oder, Sie haben Glück und das Ergebnis wird zufällig erreicht.
Kopieren Sie das Programm in eine Datei und experimentieren Sie damit. Ich glaube es wird Ihre Fähigkeit zu programmieren verbessern. Es handelt sich hier um ein "klassisches" Programm.
Hier ist das bereits bekannte Programmfragment, das den Anwender nach einer Gleitpunktzahl fragt:
// die Zahl vom Anwender holen String nChars; BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in) ); System.out.println("Geben Sie eine Zahl ein:"); nChars = stdin.readLine(); n = Double.parseDouble( nChars );
Hier ist das Programm:
class Quadratwurzel { public static void main( String[] args ) { final double FASTNULL = 1.0E-14 ; double n = 3.0 ; double schaetzung = 1.0 ; while ( Math.abs( n/(schaetzung*schaetzung) - 1.0 ) > FASTNULL ) { // einen neuen Wert für schaetzung berechnen schaetzung = n/(2*schaetzung) + schaetzung/2 ; } System.out.println("Die Quadratwurzel von " + n + " ist " + schaetzung ) ; } }
Es wäre schön, wenn der Anwender die Quadratwurzel, die berechnet werden soll, eingeben könnte.