C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[58610] Re:Re:반올림이 잘 않되네요 ㅠㅠ
김동욱 [kimehddnr] 1544 읽음    2009-09-23 08:54
답변 감사합니다.

어느정도 원인을 찾은것 같은데 어떻게 해결해야할지 ㅠㅠ

double a = 2.802, b = 2.803, c = (3.56 - 3.555) / 0.01;
double temp = RoundTo((a + b) * c, -3);
Edit1->Text = FloatToStr(temp);

c 부분을 계산하면서 디버그시에는 0.5로 보이는데 실제값은 0.5가 되지 못하나보네요.

좀 황당하기도 하구 ㅠㅠ

김민호.소중한꿈 님이 쓰신 글 :
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: 	double temp = RoundTo((2.802 + 2.803) * 0.5, -3);
: 	Edit1->Text = FloatToStr(temp);
: }
: 

:
: 이런식으로 테스트 해봤는데, 2.803 으로 값이 제대로 나오던데요?
: 왜 결과가 다르게 나왔는지 알 수 있도록 해당 부분의 소스를 좀 볼 수 있을까요?
:
: 김동욱 님이 쓰신 글 :
: : RoundTo 나 SimpleRoundTo, FormatFloat 모두 사용해도 반올림이 되지 않네요.
: :
: : 당연히 되야되는거 같은데 디버깅 모드에서 반올림 전까지는 값이 제대로 들어가는데 결과는 반올림이 않되네요.
: :
: : double 형으로 연산하고 계산식은 (2.802 + 2.803) * 0.5 인데 소수3자리에서 반올림하면 2.802로 나타납니다.
: :
: : 이거 가지고 몇시간이나 해메고 있네요. 혹시 옵션을 조정하면 되지 않을까 해서 이것 저것 건드려 보고 있는데
: :
: : 시간만 가네요. ㅜㅜ

+ -

관련 글 리스트
58602 반올림이 잘 않되네요 ㅠㅠ 김동욱 1101 2009/09/22
58603     Re:반올림이 잘 않되네요 ㅠㅠ 김민호.소중한꿈 1349 2009/09/22
58610         Re:Re:반올림이 잘 않되네요 ㅠㅠ 김동욱 1544 2009/09/23
58612             Re:Re:Re:소 뒷걸음치다 쥐잡은 결과 김민호.소중한꿈 1592 2009/09/23
58613                 정말 감사합니다. 속이 후련하네요 ㅎㅎ (내용없음) 김동욱 1207 2009/09/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.