Почему переменная типа int требует приведения типа при присваивании?
уважаемые. Простой вопрос. Почему происходит так, что при присваивании переменной результата выражения, которое возвращает вещественное число, всё компилируется без приведения типа; просто отбрасывается дробная часть и всё. Однако, если мы попробуем присвоить переменной типа int вещественное число, то выдаст ошибку, вместо всё того же элементарного отбрасывания, и мы вынуждены писать (int).
public class Solution {
public static void main(String[] args) {
int x = 5 / 2; //2.5
int y = 2.5; //Ошибка.
int z = (int) 2.5;
}
}
Ответы (2 шт):
int x = 5 / 2; // ne 2.5, a 2
Справа происходит "целочисленное деление", так как оба операнда - целые.
Попробуйте:
int x = 5.0 / 2;
В первом случае это работает, потому что при делении целого числа в
javaостаток при делении отбрасывается (получится2).Во втором же случае мы явно присваиваем целому числу вещественное из-за этого приходится использовать приведение типов (опять же в переменной
xполучится2).