Possible Loss of Precision

From Progzoo
Jump to navigation Jump to search

A double can store more decimal places than a float. This means that if convert a double to a float we will lose precision - i.e. the number will be less precise.

Possible loss of precision

We cannot even compile a program that might involve a loss of precision. Attempting to (implicitly) convert a double to a float will cause a compile error such as:

Demo.java:4: possible loss of precision
found   : double
required: float

We should do one of the following:

  • Explicitly cast from double to float:
float d = (float)3.8;
  • Use f to indicate that the literal is a

float not a double

[Font] [Default] [Show] [Resize] [History] [Profile]

Problems with Round

We can use Math.round to convert:

  • A double to a long
  • A float to an int
In this example we try to convert a double to an int. The solution is to either:
  • Change the double to a float first:
    int i=Math.round(3.1f);
  • Change the long to an int:
    int i=(int)Math.round(3.1);

This is an issue with Java

[Font] [Default] [Show] [Resize] [History] [Profile]