Numeric Conversions Through Casting

A conversion needs to happen when assigning a numeric value of one type to a variable of a different type.
Data values can be implicitly (automatically) converted whenever the conversion would not result in a loss of data.  This is possible if the target type has a wider range of types or greater precision than the source type.
Implicit conversion:
1
2
3
4
int i = 12;
long l = i;     // Implicit (int to long)
float f = i;    // Implicit (int to float)
double d = 4.2f;  // Implicit (float to double)
An explicit conversion is required when the conversion cannot be done without losing data.  These conversions require a cast operator that specifies the target type.
Explicit conversion:


1
2
3
4
5
6
7
long l = 12;
int i = l;        // Compiler error--can't implicitly convert
int i = (int)l;     // Explicit (long to int)
float f = 4.2f;
i = (int)f;         // Explicit (float to int)
double d = 4.2f;
f = (float)d;       // Explicit (double to float)