加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 10:15:21 所属栏目:大数据 来源:网络整理
导读:当使用Delphi 2009编译并运行时,此控制台应用程序写入“奇怪”。 “小于”运算符两边的值相等,但代码的行为就好像不相等。我可以做些什么来避免这个问题? program Project5;{$APPTYPE CONSOLE}var C: Currency;begin C := 1.32; if C 1.32 then begin Wri
当使用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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读