2009년 07월 14일
[C#] 정수를 실수로 형변환할 때 주의
C#에서 정수(Int32)의 범위는 -2147483647 ~ 2147483647 이다.
따라서, 아래와 같이 값이 큰 정수를 계산 후에 실수 변수에 저장하는 경우에 주의해야 한다.
int n = 1234567;
double x = (double)(n * n);
double y = (double)n * (double)n;
1) x = -557712591; 오류!
형변환 전에 먼저 n*n 계산과정에서 overflow가 발생하여 잘못된 값이 x에 저장된다.
2) y = 1524155677489; 정답!
따라서, 아래와 같이 값이 큰 정수를 계산 후에 실수 변수에 저장하는 경우에 주의해야 한다.
int n = 1234567;
double x = (double)(n * n);
double y = (double)n * (double)n;
1) x = -557712591; 오류!
형변환 전에 먼저 n*n 계산과정에서 overflow가 발생하여 잘못된 값이 x에 저장된다.
2) y = 1524155677489; 정답!
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- 오바마-_-;; by 지나
- 포인터에 대해서 by 스폴
- C 포인터, 확실히 알자(1) - 변수와 포인터 by 시즈하
- 1을 0001로 변경 (선행 0 또는 leading zero) by 해피포터
- 연습문제 3-1 by SIEBEN
# by | 2009/07/14 11:56 | 프로그래밍 | 트랙백 | 덧글(1)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]