만능문답


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


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


문제의 소스코드:


#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 192337
공지 [공지] 만능문답 게시판을 이용하는 분들을 위한 당부 말씀 [3] iris 2010.03.16 172448
5671 밥 로스의 Joy of Painting [9] file matsal 04.21 686
5670 막내동생 운전 연습용 차? [9] 앙겔로스 04.19 872
5669 모터 구동 턴테이블을 만들려고 합니다. [23] file 노랑잠수함 04.13 845
5668 아수스 노트북과 소비자원 [11] 가을 03.30 1065
5667 제 선배가 이번에 상무님이 되신다네요. [6] 해색주 03.30 918
5666 인터넷 공유기 iptime N2, wwan포트, 1번포트에 불이 안들어오면? [10] 느릅나무 03.27 868
5665 한 (상위)공유기 밑에 여러 (하위)공유기 연결하기? [6] file 느릅나무 03.27 900
5664 인센티브 관련해서 질문드립니다.~ [5] 청부업자 03.27 715
5663 iptime N2 공유기 전원 아답터 고장났어요. [13] file 느릅나무 03.26 987
5662 mipad2 무선랜 문제 문의 드립니다. [5] 바보준용군 03.21 825
5661 구글이 만든 멜트다운 패치는 일반인이 지금 구할 수 있나요? [2] 최강산왕 03.20 794
5660 이게 카카오톡 문제일까요 ? [3] 왕초보 03.20 735
5659 윈도우 서버(Windows Server) 선택? [2] 느릅나무 03.15 1381
5658 스타벅스 reusable cup [1] 하얀강아지 03.06 2365
5657 문의드립니다. [5] 도원아빠 03.06 2233
5656 정품 윈도우 10에 왜 이런 메시지가 뜰까요? [4] file 엘레벨 03.06 2373
5655 KAIST 1박 2일 코스를 생각중입니다. [8] 해색주 03.06 2291
5654 미려한 문장을 가진 소설가 / 수필가 추천부탁드립니다. [2] 쿠후^^ 03.05 2129
5653 여행지 추천 부탁합니다. 러시아 vs 베트남 vs 기타동남아 [8] 쿠후^^ 03.03 2318
5652 ssd교체하면 빨라 질까요? [7] 상호아빠 03.02 2236

오늘:
2,215
어제:
3,632
전체:
11,469,104