delphi – 具有货币价值/常数值比较的奇怪的结果

前端之家收集整理的这篇文章主要介绍了delphi – 具有货币价值/常数值比较的奇怪的结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当使用Delphi 2009编译并运行时,此控制台应用程序写入“奇怪”。
“小于”运算符两边的值相等,但代码的行为就好像不相等。我可以做些什么来避免这个问题?
program Project5;

{$APPTYPE CONSOLE}

var
  C: Currency;
begin
  C := 1.32;

  if C < 1.32 then
  begin
    WriteLn('strange');
  end;

  ReadLn;
end.

附:代码工作正常与其他值。

这个answer由Barry Kelly解释说,货币类型“不像浮点代码那样容易受到精度问题的影响”。

解决方法

由于像“货币”(1.32)这样的硬投资是不可能的,您可以使用以下内容进行显式投射
Function ToCurrency(d:Double):Currency;
    begin
       Result := d;
    end;

procedure TForm1.Button1Click(Sender: TObject);

var
  C: Currency;

begin
  C := 1.32;
  if C < ToCurrency(1.32) then
  begin
    Writeln ('strange');
  end;
end;

另一种方式可能是通过使用const或变量强制使用curreny

const
  comp:Currency=1.32;
var
  C: Currency;
begin
  C := 1.32;
  if C < comp then
  begin
    writeln ('strange');
  end;
end;
原文链接:https://www.f2er.com/delphi/103350.html

猜你在找的Delphi相关文章