Cast the number to the smaller type. (A cast is a type listed in parentheses before a value that causes the value to be treated as though it were of the listed type.)
For example, to
cast a long
to an int
, you need a cast. To cast a
double
to a float
, you also
need a cast.
This causes newcomers some grief, as the default type for a number
with a decimal point is double
, not
float
. So code like:
float f = 3.0;
won’t even compile! It’s as if you had written:
double tmp = 3.0; float f = tmp;
You can fix it either by making f
be a
double
, by making the 3.0 be a
float
, by putting in a cast, or by assigning an
integer value of 3:
double f = 3.0; float f = 3.0f; float f = 3f; float f = (float)3.0; float f = 3;
The same applies when storing an
int
into a short
,
char
, or byte
:
// CastNeeded.java public static void main(String argv[]) { int i, k; double j = 2.75; i = j; // EXPECT COMPILE ERROR i = (int)j; // with cast; i gets 2 System.out.println("i =" + i); byte b; b = i; // EXPECT COMPILE ERROR b = (byte)i; // with cast, i gets 2 System.out.println("b =" + b); }
The lines marked EXPECT COMPILE ERROR will not compile unless either commented out or changed to be correct. The lines marked “with cast” show the correct forms.
18.191.254.44