Почему набрать большой двойной к int в Java всегда дает 2147483647 вместо «слишком большой» ошибки или -1 [дубликата] илJAVA

Программисты JAVA общаются здесь
Anonymous
Почему набрать большой двойной к int в Java всегда дает 2147483647 вместо «слишком большой» ошибки или -1 [дубликата] ил

Сообщение Anonymous »

Код: Выделить всё

import java.util.Scanner;
class Test{
public static void main(String[] args){

double d = 9223372036854775807.646;
int a = (int)d;
System.out.println(a); //Output : 2147483647

long l1 = 9223372036854775807l;
int b = (int) l1;
System.out.println(b); //Output : -1

int c = (int)9223372036854775807l;
System.out.println(c); //Output : -1

}
}

Question:
I’m confused about how Java handles casting large numeric values to int
My doubts:

Why does the first case (double → int) always give 2147483647 (Integer.max_value) для больших чисел, даже когда я явно поднимаю в (int)? Почему? Десятичная часть, держите только целочисленную часть, а затем преобразуйте ее так же, как и большое длинное значение. Но вместо этого он дает 2147483647 (integer.max_value). < /P>
Почему Java справляется с этим по -разному и не ведет себя как преобразование Long → Int? Почему нет «целого числа слишком большой» ошибки или поведения, подобного двум другим случаям?

Подробнее здесь: https://stackoverflow.com/questions/797 ... instead-of

Вернуться в «JAVA»