I have an exam question I am revising for and the question is for 4 marks.
\"In java we can assign a int to a double or a float\". Will this ever lose
Here's what JLS has to say about the matter (in a non-technical discussion).
The following 19 specific conversions on primitive types are called the widening primitive conversions:
int
tolong
,float
, ordouble
- (rest omitted)
Conversion of an
int
or along
value tofloat
, or of along
value todouble
, may result in loss of precision -- that is, the result may lose some of the least significant bits of the value. In this case, the resulting floating-point value will be a correctly rounded version of the integer value, using IEEE 754 round-to-nearest mode.Despite the fact that loss of precision may occur, widening conversions among primitive types never result in a run-time exception.
Here is an example of a widening conversion that loses precision:
class Test { public static void main(String[] args) { int big = 1234567890; float approx = big; System.out.println(big - (int)approx); } }
which prints:
-46
thus indicating that information was lost during the conversion from type
int
to typefloat
because values of typefloat
are not precise to nine significant digits.