만능문답


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


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


문제의 소스코드:


#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 209697
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189849
5837 혹시 49,900원에 1+1으로 준다는 "2TB 쾌속 메탈 USB 메모리" 써 보신 분 계신지요? [5] 야호 05.27 1112
5836 디지털 카메라 촬영방법을 잘 모르겠네요. [13] file 수퍼소닉 05.27 403
5835 hdmi cable 하나에 모니터 두개 연결해도 화질 저하가 없을까요? [10] 최강산왕 05.10 34109
5834 ZOOM사용시 필요한 웹켐 [10] 상호아빠 04.20 2367
5833 아두이노 패키지 구매 문의 드립니다. [6] 해색주 04.12 16288
5832 마더보드 cpu업그레이드 [4] 상호아빠 04.03 537
5831 타이어 쬐금 더타도 되겠죠 [5] file 바보준용군 03.24 543
5830 내 점수는 도대체 어디서 볼 수 있나요? [5] tntboom 03.03 539
5829 도서관 질문입니다. [6] 바이디 02.17 607
5828 이산화탄소 센서 [4] 영진 02.12 935
5827 어디에 사용하는 물건인가요? [1] file 상호아빠 02.12 509
5826 Windows 10의 네트워크 설정을 하려고 하는데 잘 안 되네요. 뭐가 문제일까요? [3] 야호 02.11 1667
5825 글을 신고할때 클릭해서 읽어야 신고할 수 있다는게 찝찝합니다. [6] 나도조국 02.07 440
5824 외장하드 연결문제 [2] ds1dvm 01.29 538
5823 삼성 우퍼 스피커 (간단히 해결 했습니다.) [6] file 상호아빠 01.28 3456
5822 유튜브질문 [1] 상호아빠 01.27 375
5821 혹시 이런 모바일 앱 있을까요? [1] 엘레벨 01.25 380
5820 일본어에서 카타를 쓰는 경우 [2] 영진 01.23 519
5819 유튜브 동영상 캡춰하기 [2] 상호아빠 01.22 448
5818 노트북을 옆그레이드 해야 할까요 사야 할까요? [9] 엘레벨 01.18 669

오늘:
674
어제:
796
전체:
15,193,692