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?

Eine gute Antwort wäre:

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.

Verbesserung des Programms

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.

FRAGE 16:

Kopieren Sie das Programmfragment (gedanklich) in das Programm, so dass der Anwender n eingeben kann.

Inhaltsverzeichnis