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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |