만능문답


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


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


문제의 소스코드:


#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 209662
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 189814
5935 포인트 확인 방법을 못 찾겠습니다. [1] 수퍼소닉 02.02 259
5934 Palm V 와 Palm Vx 는 서로 호환되나요? [4] file 海印 03.09 265
5933 음악을 즐기는 방법 문의드립니다. [2] 맑은하늘 12.24 269
5932 구독 프로그램 구독료에 대한 문의가 있어서 질문 드립니다. [2] 검멍선 11.02 293
5931 어디로 가야할까요?? [2] file 인간 01.06 293
5930 전남 화순 여행지 추천 바랍니다. [6] 해색주 03.03 293
5929 공유기 추천좀 해주세요. [1] 앙겔로스 02.19 296
5928 팜 TX 배터리 교환하는 좋은 방법 조언 부탁드립니다. [2] SON 10.29 305
5927 시인 혹은 시집 추천 부탁드립니다. [9] 쿠후^^ 06.19 305
5926 다익스트라 알고리즘 질문 있습니다. [6] file 스파르타 12.08 307
5925 캐논 1100d lcd 스크린 교체 [1] 상호아빠 06.30 311
5924 c언어 자료구조 관련 간단한 질문 있습니다. [10] file 스파르타 10.13 314
5923 ebay에서 배송지가 영국인 palm m500 keyboard를 한국에서 사는 방법? 海印 03.12 315
5922 이 노트북 , 앞으로 몇년 갈까요. [3] 우야씨 12.23 317
5921 Windows 10에서 폴더의 크기와 그 내용물의 크기가 다르게 나옵니다. [2] 야호 03.11 322
5920 광부 한분 영입해도 될까요? [4] 우야씨 01.17 323
5919 절연 테이프 위치 [1] file 우야씨 09.12 324
5918 Win7+FireFox41.0.1에서, 편집기 문단 나누기 (줄바꿈) 하면 이상하게 됩니다. [7] 왕초보 10.08 326
5917 Calendar [2] 01.18 326
5916 IT 분야나 주식 등등에 관심있는 분들은 영자신문은 몇개까지 구독하시나요? [10] 최강산왕 06.28 327

오늘:
790
어제:
916
전체:
15,150,164