如何在delphi中比较double?

前端之家收集整理的这篇文章主要介绍了如何在delphi中比较double?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正面临数据类型双重比较的问题:
if(p > pmax) then
begin
  Showmessage('');
end

如果这两个值都是100(p = 100和pmax = 100),那么它也将进入if子句。

解决方法

有几个比较双打的概率。一个问题是,你所看到的并不完全是由于四舍五入而得到的。您可以拥有99.999999996423和100.00000000001632,它们都被舍入为100,但它们不相等。

解决方案是使用边距。所以如果两个双打的差异在边际范围之内,你就接受他们的平等。

您可以使用margin作为可选参数创建IsEqual函数

function IsEqual(const ANumber1,ANumber2: Double; const AMargin: Double = cMargin): Boolean;
begin
  Result := Abs(ANumber1-ANumber2) <= AMargin;
end;

猜你在找的Delphi相关文章