#47 – Numeric Conversions Through Casting
August 3, 2010 2 Comments
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:
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:
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)