소수점 4째자리까지 비교를 하는데 어던것은 잘되고 어떤 금액은 안되는 이유는 뭘까요?
예를 들어
185.2500이라는 값이 있는데
sSupply_Sum:=185.2500;
sSupply_Sum2:=185.2500;
if sSupply_Sum = sSupply_Sum2 then
begin
MessageBox(Self.Handle, '납품작업이 종료되었습니다. 수정작업으로 전환하시기 바랍니다.', ' 알 림', MB_ICONWARNING + MB_OK);
Abort;
end;
이렇게 되면 조건절에 걸려야 하는데 그냥 넘어가는이유는 뭘까여
아시는 분은 답변부탁드립니다
그러나 실제 코딩은 그와 같지 않고 다를꺼에요.
다음을 보세요..
var d, a : double;
begin
d := 1.023;
a := 1000;
d := d * a;
if d = 1023 then
exit;
.....
end;
이와같으면 빠져나가지 않고 계속 진행될 것 같죠
그러나 유감스럽게도 그냥 빠져나옵니다.
여기서 브레이크를 걸고 d 값을 보면 1023으로 나옵니다.
또 여기서 속으면 안됩니다.
디버거에서 Dump 선택해서 값을 보면
실제는 1022.9999999999?? 이런값 이란것을 알수 있습니다.
그래서 될수 있으면 실수형 비교문은 Roundto를 써서 비교해보세요
유효자리가 4자리이면
if Rountto(d, -4) = 1023 then
exit;
이런식으로 ^^ 그럼 안녕히 계시고 전 이만...