답변 감사합니다.
어느정도 원인을 찾은것 같은데 어떻게 해결해야할지 ㅠㅠ
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로 나타납니다.
: :
: : 이거 가지고 몇시간이나 해메고 있네요. 혹시 옵션을 조정하면 되지 않을까 해서 이것 저것 건드려 보고 있는데
: :
: : 시간만 가네요. ㅜㅜ
|