[C언어] double형 데이터 5.000000을 int형 변수에 넣으면 4가 나옵니다
난길
2023.04.01
안녕하세요.
반올림 함수를 만드는 중에 의문이 들어서 질문을 드립니다.
원래는 소수점 이하가 떨어져 나가서 5가 나오는 것이 정상아닌가요?
큰 데이터에서 작은 데이터로 옮기면 데이터 손실이 오는 것은 알고 있지만, 이 경우는 아니지 않나요?
대부분의경우는실수에서 정수로 제대로 변환이 됐거든요.
예를 들어, 9.005를 int형 변수에 넣으면 9가 나왔습니다.
계속 4가 나와서 결국 다른 방식으로반올림 함수를 작성하고 말았지만, 이 의문이 계속 남네요.
-
클라우드
double는.. 정수를 정확하게 표현할 수 없습니다.
( 그에 관해서는 컴퓨터에서 실수를 처리 하는 방법을 알아 보시면 되구요..)
제 예상에는 더블에다가 5.00000 을 집어 넣어도.. 아마도
실수에 들어 가는 값은 실제로 5보다 작으면서 아주 근접한 수가 들어 가는게 아닌가 합니다.
예를 들면 4.9999999 가 들어 가게 되지 않을까 합니다.
그리고 다시 이를 정수형으로 캐스팅 하면, 4가 되는게 아닐까요? ㅎㅎ
네네네. 맞습니다. ㅎ