만능문답


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


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


문제의 소스코드:


#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 224152
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 204274
5900 노트북 배터리에 관해 도움 부탁 드립니다. [15] 늘푸른나무 04.10 464
5899 팜 TX 배터리 교환하는 좋은 방법 조언 부탁드립니다. [2] SON 10.29 506
5898 [PC] 업그레이드를 고민 중입니다만... [2] 하뷔 02.20 514
5897 홍콩에 여행을 가려합니다~ 맛집 추천해주실 수 있을까요? ^^a [8] 다카오카 01.15 542
5896 메뉴와 파이어폭스 [5] 베이스 10.02 543
5895 쑤조우 전통시장 가보신 분 계시나요 ? 현재 출장중이네요. 새벽 5시네요 [3] 맑은하늘 01.14 544
5894 Win7+FireFox41.0.1에서, 편집기 문단 나누기 (줄바꿈) 하면 이상하게 됩니다. [7] 왕초보 10.08 547
5893 DVD/Blu-Ray Ripper 중에 가장 나은 것은 어떤 것일지요? [5] 야호 11.03 548
5892 노트북 조언 부탁드립니다. [5] 상호아빠 12.08 552
5891 Calendar [2] 01.18 557
5890 잘 아시는 복지원 있으면 소개해주십시요 [2] 공간 03.02 557
5889 전파인증을 받야아 하는 조건 Seoruni 09.08 558
5888 호텔예약? [4] 도원 07.07 558
5887 노트북 추천해주세요 [3] file 하루씨 01.24 558
5886 맥북 살릴 방법 좀 알려주세요 [7] tomeast 10.30 559
5885 신문 추천 부탁드립니다 [9] SiegZion 11.05 560
5884 다시 폰에 대해 질문드려봅니다.. [4] 아레스 11.05 561
5883 파이쏜 초보 질문입니다 [2] file 건설노무자 01.20 561
5882 팔순의 어르신들께 맞는 TV ? [16] 왕초보 02.25 562
5881 유튜브질문 [1] 상호아빠 01.27 563

오늘:
15,525
어제:
283,667
전체:
24,266,854