在Delphi XE2中使用double類型時,我得到的計算結果無效。以下代碼是一個非常簡單的計算結果,應該爲零。相反,它返回-1.13686837721616E-13,這是不正確的。爲什麼Delphi XE2不正確地計算double值?
var
dblValue1, dblValue2, dblValue3, dblTotal: double;
begin
try
dblValue1 := 1671.37;
dblValue2 := 871.37;
dblValue3 := 800.00;
dblTotal := (dblValue1 - dblValue3);
dblTotal := (dblTotal - dblValue2);
Write(FloatToStr(dblTotal));
ReadLn;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
這與32位或64位構建失敗相同。
爲什麼計算失敗?
計算不會失敗。使用雙打,舍入錯誤是可以預料的。這與雙打允許的一樣正確。 – towr