JAVA/포스팅

자바 정수형과 실수형간의 형변환

짜집퍼박사(짜박) 2023. 10. 31. 00:57

자바에서 정수형(integral types)과 실수형(floating-point types) 간의 형변환은 상당히 일반적으로 발생합니다. 다음은 이러한 변환에 관한 자세한 설명입니다.

 

1. 정수형에서 실수형으로의 형변환

1.1. 암시적 형변환 (Implicit Type Casting)

정수형 값을 실수형 변수에 할당하면 자바는 자동으로 해당 값을 실수형으로 변환합니다. 이는 데이터 손실의 위험이 없기 때문에 암시적으로 수행됩니다.

int intValue = 42;
double doubleValue = intValue; // 암시적 형변환, doubleValue에는 42.0이 저장됩니다.

1.2. 명시적 형변환

이 경우에는 보통 필요하지 않습니다. 그러나 코드의 의도를 명확히 하기 위해 때때로 명시적으로 형변환을 사용할 수 있습니다.

int intValue = 42;
double doubleValue = (double) intValue; // 명시적 형변환, 일반적으로 필요하지 않습니다.

 

2. 실수형에서 정수형으로의 형변환

2.1. 명시적 형변환 (Explicit Type Casting)

실수형 값을 정수형 변수에 할당하려면 데이터 손실이 발생할 수 있기 때문에 명시적으로 형변환을 수행해야 합니다. 소수점 이하의 부분은 제거됩니다.

double doubleValue = 42.9;
int intValue = (int) doubleValue; // 명시적 형변환, intValue에는 42가 저장됩니다.

 

 

주의점

 

1. 데이터 손실 : 실수형에서 정수형으로 변환하면 소수점 이하의 데이터가 손실됩니다.
2. 범위 초과 : 큰 실수 값을 정수형으로 변환하려고 하면 오버플로가 발생할 수 있습니다. 예를 들어, double의 값이 Integer.MAX_VALUE를 초과하면 결과 값이 예상과 다를 수 있습니다.
3. NaN과 무한대 : double 또는 float 값이 NaN(not a number) 또는 무한대(infinity)인 경우, 이를 정수형으로 변환하면 어떤 값이 되는지 주의해야 합니다. 예를 들면, positive infinity는 Integer.MAX_VALUE로, negative infinity는 Integer.MIN_VALUE로 변환됩니다.

 

정수형과 실수형 간의 형변환은 상대적으로 간단하지만, 위의 주의사항을 염두에 두고 변환을 수행해야 합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 연산자와 피연산자  (0) 2023.11.01
자바 자동 형변환  (0) 2023.11.01
자바 데이터 타입별 형변환  (0) 2023.10.29
자바 형변환  (0) 2023.10.29
자바 음수의 2진 표현  (0) 2023.10.16