문제에서 double을 다뤄야 하면, 주의해야할 점들이 있어서 나열해 본다.
이 문제를 보자.
먼저, double을 int로 변환해야하는 경우 단순한 형변환으로는 부족할 수 있다.
예를 들어 다음코드를 돌려보면 1004가 아닌 1003이 찍힌다.
1
2
3
4
5
6
7
|
int32_t main()
{
double a = 10.04 * 100;
int b = a;
printf("%d\n", b);
return 0;
}
|
cs |
이경우 다음처럼 뒤에 0.5를 곱해주고 변환해야 제대로 변환된다.
1
2
3
4
5
6
7
|
int32_t main()
{
double a = 10.04 * 100 + 0.5;
int b = a;
printf("%d\n", b);
return 0;
}
|
cs |
아래처럼 rint를 쓰면 가까운 int로 변환해서 해당문제가 없어진다고 한다.
double a = 10.04 * 100;
int b = (int) rint(a);
printf("%d\n", b);
반응형
'Programming > Problem Solving' 카테고리의 다른 글
cph (0) | 2024.07.21 |
---|---|
백준 4103 ATM (0) | 2020.05.05 |
백준 15481 그래프와 MST (0) | 2020.05.02 |
BST 트리 구현 (0) | 2020.04.09 |
인접행렬, 인접리스트 (0) | 2020.04.09 |