Java では、暗黙的に int を float に変換できます。これにより、以下のコード例に示すように、精度が失われる可能性があります。
public class Test {
public static void main(String [] args) {
int intVal = 2147483647;
System.out.println("integer value is " + intVal);
double doubleVal = intVal;
System.out.println("double value is " + doubleVal);
float floatVal = intVal;
System.out.println("float value is " + floatVal);
}
}
出力は
integer value is 2147483647
double value is 2.147483647E9
float value is 2.14748365E9
精度が失われた場合に int から float への暗黙的な変換を許可する理由は何ですか?