在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