만능문답


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


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


문제의 소스코드:


#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 209690
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189843
5937 이 글은 테스트용입니다.(낚시성 질문 내용 포함) [11] iris 03.13 9591
5936 일본인 친구가 식당을 열었는데.. 선물을 뭘 하면 좋을까요 ? [14] 왕초보 03.13 8975
5935 기타히어로 3 - PC 판 어떤가요 ? [5] 맑은하늘 03.13 9260
5934 자료실의 자료 등록 범위가 어디까지인가요? [4] 불량토끼 03.14 8314
5933 DVR 카드 종류에 대해서 질문드립니다. [3] Freedom^^ 03.14 9776
5932 코어i3 cpu 노트북 성능이 궁금합니다. [2] 돌마루™ 03.14 9709
5931 으아.... php 질문입니다; [1] 무열펭귄君 03.14 8234
5930 USB 메모리가 마지막 Access 시점을 기억하지 못하는 이유가 무엇인지요? [8] 로이엔탈 03.14 8217
5929 곰돌이 인형 하나 가보로 될만한거 추천 부탁드립니다. [3] 카이사르 03.14 8322
5928 중고노트북 시세문의 [4] 팜좋은 03.14 9888
5927 eeepc 의 앞 꼬다리는 어디서 구할 수 있나요? [4] file 현이아빠 03.14 7409
5926 헬스 자전거 추천 부탁드립니다. [4] 바이디 03.14 10324
5925 여의도에 ielts 학원이 있을까요? [2] zegal 03.15 9984
5924 KT 요금제, 스마트 500이 무엇인가요 ? [6] 맑은하늘 03.15 7160
5923 이 영화 제목좀 알려주세요. [7] 시월사일 03.15 6730
5922 Dvix 플레이어를 사려고 하는데... 추천요...^^* [5] 해법수학 03.15 10192
5921 PSP가 전원이 들어오지않네요. [4] 시월사일 03.15 7144
5920 컴포넌트 연결이 이상해요~ file 오동명 03.15 7301
5919 영어 번역 좀 도와주세요... 급합니다. [2] 힘냅시다 03.15 6316
5918 질문 - Mac을 뇌사에서 살릴 방법 [7] Dr.Aspirin 03.16 7632

오늘:
235
어제:
850
전체:
15,189,256