만능문답


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


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


문제의 소스코드:


#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 209739
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189894
5598 혹시 도서관 논문파일(ezpdf)파일을 워드로... [2] 쿠군 05.12 22436
5597 외장하드드라이브의 SCANDISK가 무한루프에 빠집니다 ㅠ.ㅜ [3] 파란바람 05.12 1474
5596 데스크탑에 대형 스피커를 연결하고 싶은데요... [5] file 미케니컬 05.12 2405
5595 배수펌프 추천 좀 부탁드립니다. 카이사르 05.13 1563
5594 오이스터 바? [6] Brian 05.13 1917
5593 서울대 입구 불쭈꾸미 아시는분 [4] 505초보 05.13 2040
5592 [급] 노르웨이 크로네? [4] 우리 05.13 2036
5591 HDMI 케이블은 어떤걸 구매하면 좋을까요? [7] 남자 05.13 1933
5590 신혼여행지 추천좀 부탁드릴께요~! [5] judy 05.13 1763
5589 우분투에서 화면 해상도 문제. [6] 유령회원 05.13 2203
5588 음... 우리 케퍽은 RSS 안되나요? 포로리 05.13 1265
5587 스테인레스로 이런 것 제작하려면 어디로 가야 할까요? [4] file 505초보 05.14 2020
5586 분당 -> 일산 가장빨리.. [6] Brian 05.14 1893
5585 디빅플레이어 최근 구매하신분 계시나요 ? [7] 맑은하늘 05.14 1322
5584 자바 프로그래밍 잘 아시는 분께 질문 [3] 김원철 05.14 1585
5583 노트북을 팔려고 하는데.. 가격 책정좀 해주세요 ㅠㅠ; [6] file Visual 05.14 1316
5582 웹 호스팅 업체 추천 [5] sjlee 05.14 2433
5581 왜 호스팅업계에서는 CentOS 를 선호할까요? [2] 가영아빠 05.15 1669
5580 아래아 한글에서 PDF 만들 때 주석이 가능하게 하는 법? 호수가 05.15 1561
5579 자동차는 어떻게 살 수 있나요? [8] 애렁이 05.15 1371

오늘:
90
어제:
552
전체:
15,211,292