만능문답


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


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


문제의 소스코드:


#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 209696
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189848
5757 캠핑은 아니고 오토 캠핑 비스므래 한걸 해볼려고 합니다 [6] 바보준용군 03.12 404
5756 ebay에서 배송지가 영국인 palm m500 keyboard를 한국에서 사는 방법? 海印 03.12 317
5755 Windows 10에서 폴더의 크기와 그 내용물의 크기가 다르게 나옵니다. [2] 야호 03.11 324
5754 윈도10 시작버튼 엑셀파일 바로 실행 안되는 문제 [2] matsal 03.11 726
5753 Palm V 와 Palm Vx 는 서로 호환되나요? [4] file 海印 03.09 267
5752 요즘은 vmware 에서 맥os 돌리는거 쓸만한가요? [6] 최강산왕 03.05 835
5751 Palm VX vs Palm M500 차이? [5] file 海印 03.04 374
5750 전남 화순 여행지 추천 바랍니다. [6] 해색주 03.03 295
5749 H81 보드 바이오스 업데이트 방법 [3] 윤성환 03.02 904
5748 교통 조사관에게 전화가 왔습니다-_- [5] 바보준용군 03.01 698
5747 Kobo EReader 한글 설치법 [7] 상호아빠 02.24 1042
5746 수도 가압펌프 공사 어디에 문의해야 하나요? [5] matsal 02.23 389
5745 60~100M의 엑셀 파일을 다루기 위한 컴퓨터는 셋 중 어느 것이 더 나을까요? [14] 휴911 02.23 1987
5744 공유기 추천좀 해주세요. [1] 앙겔로스 02.19 298
5743 단독주택 대문 교체 및 설치 [5] 곤땅 02.11 3528
5742 엑셀로 고객관리를 하고자 하는데... [2] ds1dvm 02.07 356
5741 무선 키보드 수신기 인식 안됩니다. [4] 상호아빠 02.07 726
5740 에르고 휴먼과 에어론 체어 중에서 고민중입니다. [9] 최강산왕 02.03 4803
5739 포인트 확인 방법을 못 찾겠습니다. [1] 수퍼소닉 02.02 261
5738 배터리 수리 관련 [7] file Lock3rz 01.28 1801

오늘:
704
어제:
952
전체:
15,192,926