표현 오류가 발생했습니다. 오버플로가있을 때 더 분명합니다.
long l = 123456789L;
double d = l;
float f = l;
int i = (int) l;
short s = (short) l;
char ch = (char) l;
byte b = (byte) l;
System.out.println("l= " + l + " in hex " + Long.toHexString(l));
System.out.println("d= " + d);
System.out.println("f= " + f);
System.out.println("i= " + i + " in hex " + Integer.toHexString(i));
System.out.println("s= " + s + " in hex " + Integer.toHexString(s & 0xFFFF));
System.out.println("(int) ch= " + (int) ch + " in hex " + Integer.toHexString(ch));
System.out.println("b= " + b + " in hex " + Integer.toHexString(b));
인쇄
l= 123456789in hex 112210f47de98115
d= 1.23456789E18
f= 1.23456794E18
i= 2112454933 in hex 7de98115
s= -32491 in hex 8115
(int) ch= 33045 in hex 8115
b= 21 in hex 15
만
long
는 (플러스의 BigInteger와 BigDecimal를) 다른 모든 데이터 유형이 서로 다른 오류가 오류없이이 값을 나타낼 수 있습니다.
float
및
double
은 최상위 비트를 정확하게 나타내는 반면,
int
,
short
,
char
및
byte
은 가장 낮은 비트를 정확하게 나타낸다.
왜냐하면'float'과'double'은 같지 않기 때문입니다. ;) –