语句:
procedure TForm1.FormCreate(Sender: TObject);
var
num:real;
begin
num:=8.1;
if  num<8.1 then
form1.Caption :='fffff';
end;
运行后,form1的标题竟改为'fffff',8.1小于8.1么??

解决方案 »

  1.   

    num=8.1
    在delphi中存的是8.09999998,就当然<8.1了
      

  2.   

    不知是否属实,测试一下.如果属实,当属BUG
      

  3.   

    浮点数有精度问题,TDateTime 同理,
    所以比较大小时可以这样比较,
    if X<Y+ASmallConst
    ASmallConst是个足够小的正常量,比如对时间日期类型进行比较,你可设它为一个小于千分之一秒的数。
      

  4.   

    即使与0相比较
    也是像这样:
    IF i<0.000~~~~~~~~~~~~~1 then
      begin
      end;
      

  5.   

    改成这样子再比较:
    procedure TForm1.FormCreate(Sender: TObject);
    var
    num:real;
    begin
    num:=8.1;
    if  num*10<81 then
      form1.Caption :='fffff';
    end;
      

  6.   

    浮点数是这样的
    有误差的用Math.pas的CompareValue能解决问题
    看Delphi的Help
      

  7.   

    谢谢各位,是基本常识??不好意思,我刚学delphi,让大家见笑了