当使用Delphi 2009编译并运行时,此控制台应用程序写入“奇怪”。
“小于”运算符两边的值相等,但代码的行为就好像不相等。我可以做些什么来避免这个问题?
“小于”运算符两边的值相等,但代码的行为就好像不相等。我可以做些什么来避免这个问题?
program Project5; {$APPTYPE CONSOLE} var C: Currency; begin C := 1.32; if C < 1.32 then begin WriteLn('strange'); end; ReadLn; end.
附:代码工作正常与其他值。
解决方法
由于像“货币”(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;