Возможный дубликат:
Изменчивое поведение для возможной потери точности
Пример кода A
public class Test {
public static void main(String[] args) {
int i = 0;
i = i + 1.5;
}
}
Пример кода B
public class Test {
public static void main(String[] args) {
int i = 0;
i += 1.5;
}
}
Неудивительно, что компиляция A вызывает ошибку ниже. Удивительно, компиляция B не производит ошибок и, похоже, ведет себя так, как если бы я ввел явное преобразование в целое число до двойного значения 1.5. Почему в мире это происходит? Это противоречит всему, что я думал, что знаю!
Test.java:6: possible
loss of precision
found : double
required: int
i = i + 1.5;
^
1 error