만능문답


결론 -- 댓글에 많은 도움을 받았습니다. 감사합니다. 궁극적으로는 다른 언어로 옮겨가기로 결정했고, 이 문제는 일단 땜빵으로 돌아갔습니다.


컴퓨터가 이진법으로 계산을 하기때문에, 소수 계산을 할때 십진법으로는 도저히 이해가 안가는 엉뚱한 짓을 할 때가 있습니다. 지금 여쭙는 것이 그 중 하나인데, 원인은 알지만 해결책이 없나 해서 질문 올립니다.


문제의 소스코드:


#include<stdio.h>

#include<math.h>


void main()

{

        double a;

        a=1000.0*1.001;

        printf("%g %g\n",a,floor(a));

}


요걸 cc -lm 해서 컴파일 한 다음 수행하면..


1001 1001


하고 출력하길 기대하는데.. 1001 1000 하고 출력 합니다. -_-;; 그래서.. 이 floor 에 문제가 있군 하고는..


#include<stdio.h>


void main()

{

        double a;

        a=1000.0*1.001;

        printf("%g %d\n",a,(int)a));

}


해도 결과는 똑같습니다. -_-;; 추측하는 것은 저 0.001 이 이진수로 변환될때 무한 소수로 변환되어서.. 결과가 1001에 아주 쪼끔 모자라는 상황인 듯 한데요. 해결 방법이 없을까요. 웃기는건 float로 낮추면 문제없이 동작합니다. 그렇지만 제가 하는 일이 double precision이 필요한 일이라 답이 안되는듯 합니다. 뭔가 말도 안되는 실수를 했다기엔 너무 간단한 소스코드라.

번호 제목 작성자 작성일 조회
공지 게시판 성격에 맞지 않는 글은 예고없이 삭제합니다. [6] 星夜舞人 2011.10.10 209715
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189871
5678 혹시 5-pin 마이크로 USB female to female 젠더/어댑터/커넥터 보신 적 있으신가요? [4] 야호 08.12 378
5677 오래된 하이패스에 구형 배터리 재활용 질문 [15] IRON 08.07 718
5676 커피 로스팅에 대해서..? [19] 앙겔로스 08.05 523
5675 1.5배속 오디오 및 동영상 보기 / 스마트폰 앱이 있을까요 ? [3] 맑은하늘 08.03 566
5674 글쓸 때 주제와 부제를 구분하는 이유가 뭔가요? [3] 최강산왕 07.28 1262
5673 일정관리 어떻게 하고 계신가요 ? [5] file 맑은하늘 07.28 359
5672 게임용 마우스 문의드립니다. [12] 맑은하늘 07.28 478
5671 노트북을 추천해주세요 [12] 상호아빠 07.26 380
5670 미국에 있는 분과 통화 좋은 앱? [5] 도원 07.22 410
5669 이베이 직구.. 질문 드립니다. [4] SYLPHY 07.21 515
5668 통화녹음되는 보이스톡은? 라인? 카톡? 뭐가 있어요? [1] 도원 07.20 9427
5667 리디북스 vs 알라딘 [6] 쿠후^^ 07.17 1760
5666 스마트 폰. 메모리 관리 앱 문의드립니다. [2] file 맑은하늘 07.08 427
5665 호텔예약? [4] 도원 07.07 344
5664 기타 수리점...찾고 있습니다 [6] 맑은하늘 07.05 604
5663 vpn 서버 잘 되는 공유기는? [1] 도원 07.02 884
5662 외국인이 무비자로 우리나라 입국이 가능한가요? [17] 뿌뿌아빠 06.30 1103
5661 캐논 1100d lcd 스크린 교체 [1] 상호아빠 06.30 315
5660 IT 분야나 주식 등등에 관심있는 분들은 영자신문은 몇개까지 구독하시나요? [10] 최강산왕 06.28 331
5659 유선랜 최대 길이는? [9] 도원 06.26 1856

오늘:
57
어제:
653
전체:
15,204,179