만능문답


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


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


문제의 소스코드:


#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 209719
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189875
5598 pc 종료를 하여도 대기상태로 유지되는 문제 [4] 폴라리스 07.25 664
5597 색깔 별로 필터링 되는 필터필림이 있을까요? [3] 차칸앙마 08.24 665
5596 플스4 질문합니다! [5] 쿠군 11.23 665
5595 기계 열역학 질문 입니다. [4] 이히힝 05.28 665
5594 이 노트북 쓸만 한가요? [7] 상호아빠 01.04 665
5593 Sony DSC-WX80 vs Nikon COOLPIX P300 [15] 느릅나무 05.02 666
5592 자작 기판 어렵나요? [13] 영진 07.15 666
5591 외장하드를 레노보 dock에 연결해 사용할 때 재인식 문제 [4] file 건설노무자 08.09 668
5590 상품 브랜딩(?), 마케팅 관련 도서 추천부탁합니다. 쿠후^^ 07.26 668
5589 블로그 등에서 새글 뜨면 바로 알려주는 서비스 있나요? [4] matsal 05.19 668
5588 간지나는 백팩 (랩탑용) 추천 부탁드립니다. [2] 최강산왕 12.07 669
5587 노트북을 옆그레이드 해야 할까요 사야 할까요? [9] 엘레벨 01.18 671
5586 왜안되나요 장터란에 [4] 박기박다 09.19 672
5585 외부에서 컴을 컨트롤 하여 음악 플레이하기 [7] 상호아빠 06.11 672
5584 한국인을 상대로 하는 영어표기법은? [4] 영진 03.03 675
5583 쥬라기 월드 볼만한가요? [3] matsal 06.20 677
5582 스마트폰에 사용할 블루투스 키보드 추천 요청 드립니다 [13] 맑은하늘 12.16 677
5581 사진 인쇄랑 엘범 만드는 업체 추천 부탁 드립니다. [2] 윤발이 10.06 678
5580 [드론] 초등학생 5학년이 사용하기에 무리없는 드론 추천해주세요. [2] 수빈아빠처리짱 06.09 678
5579 추억의 외국 TV드라마를 찾습니다. [4] 쿠후^^ 12.10 679

오늘:
482
어제:
527
전체:
15,205,725