這裏是一個建議的解決方案:
procedure CheckEquals(expected, actual: double; Precision:integer; msg:string ='');overload;virtual;
...
procedure TAbstractTest.CheckEquals(expected, actual: double;
Precision: integer; msg: string);
var
I: Integer;
begin
FCheckCalled := true;
for I := 0 to Precision do begin
Expected := Expected * 10;
Actual := Actual * 10;
end;
if Round(Expected) <> Round(Actual) then
FailNotEquals(IntToStr(Round(Expected)), IntToStr(Round(Actual)), msg, CallerAddr);
end;
我知道它不好實現,但只是一個想法,我更喜歡的,然後「增量」,並更容易使用。
在DUNIT的當前版本可以使用
procedure CheckEquals(expected, actual: extended; delta: extended; msg: string = ''); overload; virtual;
CheckEquals(0.011,0.01,0.009,'will pass');
它爲什麼在其他一些機器上工作? – mjn 2010-11-10 07:05:51