Предположим, что d
является переменной double
. Напишите оператор if, который присваивает d переменной int
i
, если значение в d
не превышает максимальное значение для int
.
Метод, описанный ниже, является моей попыткой решить эту проблему:
public static void assignInt(double d)
{
int i = 0;
if(d < Integer.MAX_VALUE)
i = (int)d;
System.out.print(i);
}
Integer.MAX_VALUE
содержит 2147483647
. Я предполагаю, что это максимальное значение, которое может содержать int
? Имея это в виду, я пытаюсь вызвать assingDoubleToInt()
три раза:
public static void main(String[] args)
{
assignDoubleToInt(2147483646); //One less than the maximum value an int can hold
assignDoubleToInt(2147483647); //The maximum value an int can hold
assignDoubleToInt(2147483648);//One greater than the maximum value an int can hold. Causes error and does not run.
}
Вывод первых двух вызовов:
2147483646
0
И третий вызов, assignDoubleToInt(2147483648);
, бросает "The literal 2147483648 of type int is out of range."
Разве здесь не сравнение 2147483648 < 2147483647
? Почему i
присваивается значение, если сравнение должно оценивать false
?
Использование сравнения d < Integer.MAX_VALUE
- неправильный способ сделать это. Как проверить, может ли переменная double
соответствовать переменной int
?