만능문답


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


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


문제의 소스코드:


#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 192899
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 173072
5755 이 노트북 , 앞으로 몇년 갈까요. [3] 우야씨 12.23 195
5754 gmail문의 [6] 상호아빠 12.20 204
5753 스마트폰 보조 배터리 추천 부탁드려요. [4] 海印 12.15 236
5752 목격자를 찾습니다. app... [6] 도원아빠 12.13 242
5751 휴대용 스캐너 추천 부탁. [5] 海印 12.11 263
5750 저장용 장치, 뭐가 좋을까요? 267GB 이상. [5] 海印 12.10 185
5749 다익스트라 알고리즘 질문 있습니다. [6] file 스파르타 12.08 176
5748 미성년자 야간 아르바이트 [4] 우야씨 12.06 331
5747 차량 예열시 10여분이 지나도 냉각수 온도가 너무 낮습니다 [11] 바보준용군 12.05 605
5746 노래방 만들기 [9] 상호아빠 12.03 284
5745 자동차 연료게이지가 오락 가락 합니다.주차시 팁좀;; [18] file 바보준용군 11.26 436
5744 스포티지 R 전면 유리창 교체 관련 문의 드립니다-_-;;; [39] 바보준용군 11.18 513
5743 데스크톱 업그레이드 문의 드려 봅니다. [19] 해색주 11.14 282
5742 안쓰는 주차장 공간에 소형 조립식 창고 불법일까요 [12] 바보준용군 11.14 813
5741 맥북에 냄새 빼는 법? [14] TX 11.12 252
5740 미패드는 와이파이가 답일까요. LTE모델이 답일까요. [17] 우야씨 11.11 1628
5739 커브드 모니터를 왜 쓰나요. [11] 우야씨 11.10 870
5738 스맛폰내 사진은 노트북으로 가져오기. 같은 공유기에 접속시. [7] 海印 11.04 308
5737 구독 프로그램 구독료에 대한 문의가 있어서 질문 드립니다. [2] 검멍선 11.02 170
5736 가정용 데탑을 워크스테이션 처럼 써서 자원을 랩탑에서 사용할 수 있을까요? [5] 최강산왕 10.30 226

오늘:
2,533
어제:
2,839
전체:
12,155,446