만능문답


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


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


문제의 소스코드:


#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 209691
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189844
5877 수소차 연료는 폭팔하나요? [4] 상호아빠 02.19 630
5876 티비에서 4k 영상을 볼때, HDMI 단자가 영향을 미치나요? [11] 차칸앙마 02.12 620
5875 팬을 찾습니다. [4] 상호아빠 02.12 524
5874 [해결] 윈도우10에서는 리눅스와 달리 키보드가 마우스를 따라가려면 클릭을 해야 하는데. [14] 나도조국 02.04 584
5873 foobar2000와 비슷한 리눅스 앱이 있을까요? [3] 상호아빠 02.02 743
5872 드론을 구입하려고 하는데 추천 부탁드립니다. [9] 최강산왕 01.28 435
5871 크롬 사용시 계정에 따라 페이지가 다르게 뜹니다. [2] 스노우캣 01.21 403
5870 내연기관 차는 언제까지? [11] 영진 01.14 614
5869 노트북 HDMI 관련 질문입니다. [3] 바이디 01.13 420
5868 AGM배터리 괜찬나요 [11] 바보준용군 12.20 908
5867 Logitech Rally 분해 [4] file 상호아빠 12.09 655
5866 크롬캐스트 오디오 [11] 상호아빠 11.29 963
5865 이거 되게 쪽팔리는 전기 질문이긴 한데요 [6] 엘레벨 11.28 626
5864 알리 판매자 개인통관번호 요구 [4] IRON 11.25 1467
5863 인터넷 강의 [4] 상호아빠 11.08 514
5862 김치 냉장고 분해 [3] file 상호아빠 11.01 997
5861 음원 다운로드 사이트 - 여기서 다운로드 받을때 문제있나요? [7] 상호아빠 10.27 4567
5860 [노트북 배터리] 사용하던 HP노트북 배터리를 교체하고자 합니다. [5] 차칸앙마 10.21 501
5859 육아 문의 [6] zegal 10.13 472
5858 DVI 랑 DP나 HDMI 랑 화질차이가 나나요? [6] TX 10.07 5010

오늘:
314
어제:
850
전체:
15,189,335