https://codeup.kr/problem.php?id=1085
저장용량 계산하기에서 지난번 파이썬 풀때도 그렇고 이번에도 당황했는데
h, b, c, s를 모두 int로 지정해주고 바로 그냥 나눠주고 float으로 넘겨버렸는데
이상하게 정수부분만 살리고 소수점 이하는 모두 버려버리는 사태가 발생했다.
왜 그럴까 몇번을 더 넣어보고 시도해봤는데 이유를 몰랐는데
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=qbxlvnf11&logNo=220991286213
https://myblog.opendocs.co.kr/archives/1230
블로그들을 통해 공부해보니 정수끼리 곱해줘서 나온 int 정수형 값의 경우에는 float으로 넘어가봤자 .0으로 넘어가는 것 같다. 어차피 정수형은 실수형으로 넘겨봤자 소수점 이하를 버리고 넘겨주는 듯?하다.
원인을 알고보니 곱해준 값을 MB 단위로 바꿔줄 떄 나누기 값을 미리 곱해서 즉,
/1024/1024/8 이렇게 나눠준 것이 아니라 /(1024*1024*8)로 나눠줘 버려서 최종적으로 나눠주는 값이 그냥 정수형이어버려가지고 소수점을 버려버린 듯 하다.
덕분에 여러 블로그를 왔다갔다 하면서 데이터 값을 공부한 것 같다.
https://dojang.io/mod/page/view.php?id=493
덕분에 long, double등의 자료형들이 어떻게 사용되는가 알게 된 것 같다.
앞으로 데이터 처리할 때 어떻게 처리가 될 것인지 잘 따져보면서 코딩하도록 하자.
'Etc. > C' 카테고리의 다른 글
[C] 포인터, 배열, 동적메모리할당 (0) | 2021.10.09 |
---|---|
[C] 문자열 공백/띄어쓰기 입력 (0) | 2021.09.26 |
[C] 삼항연산자 (0) | 2021.09.21 |
[C/C++] 포인터 (0) | 2021.09.19 |
댓글