Eine gute Antwort könnte sein:

The vervollständigte Programm is given below

vervollständigen Square Root Program

In the vervollständigte Programm, the roles of "oldGuess" und of "newGuess" can both be played by the variable guess.

class  SquareRoot
{

  public static void main( String[] args )
  {
    final double smallValue = 1.0E-14 ;
    double N     = 3.00 ;
    double guess = 1.00 ;

    while ( Math.abs( N/(guess*guess) - 1.0 ) > smallValue )
    {
       // calculate a new value for the guess
       guess =  N/(2*guess) + guess/2 ;

    }

    System.out.println("The square root of " + N + " is " + guess ) ;
  }

}

Here is the output of the program:

C:JavaLessons\chap19>java SquareRoot

The square root of 3.0 is 1.7320508075688772

The last several digits of this output are probably in error since the Programm only computes 14 decimal places of accuracy.

FRAGE 15:

If you asked for more accuracy than is possible in double precision variables, what might happen? For example, say that smallValue were 1.0E-21?