A good answer might be:

  1. Will this new program compile?
    • Yes. The compiler will not complain about anything.
  2. Will it run?
    • Yes. It will run without any error messages.
  3. Is it correct?
    • No. There is an error which may be hard to find because the two loops are not self-contained.

Floating Point Loop Control

For counting loops it is best to use an integer for the loop control variable. However, it is legal to use a floating point control variable and to use fractional increments. The following program prints a table that displays x and ln(x) for values of x from 0.1 up to about 2.0:

class LogTable
{
  public static void main ( String[] args )
  {
    System.out.println( "x" + "\t ln(x)" );

    for ( double x = 0.1; x <= 2.0; x = x + 0.1 )
      System.out.println( x + "\t" + Math.log( x ) );
  } 
}

It compiles correctly, and runs. But its output is not pretty:

x                        ln(x)
0.1                     -2.3025850929940455
0.2                     -1.6094379124341003
0.30000000000000004     -1.203972804325936
0.4                     -0.916290731874155
0.5                     -0.6931471805599453
0.6                     -0.5108256237659907
0.7                     -0.35667494393873245
0.7999999999999999      -0.22314355131420985
0.8999999999999999      -0.1053605156578264
0.9999999999999999      -1.1102230246251565E-16
1.0999999999999999      0.09531017980432474
1.2                     0.1823215567939546
1.3                     0.26236426446749106
1.4000000000000001      0.336472236621213
1.5000000000000002      0.40546510810816455
1.6000000000000003      0.47000362924573574
1.7000000000000004      0.5306282510621706
1.8000000000000005      0.5877866649021193
1.9000000000000006      0.641853886172395

Remember (from a previous chapter) that floating point numbers are not absolutely accurate. In particular, 0.1 is always slightly wrong when represented inside a computer, no matter how many bits are used. The errors in x accumulate, and x drifts away from the desired value.

Notice that the last x in the table is not 2.0 as you would expect with accurate numbers.

QUESTION 6:

Are integer numbers completely accurate?