我要做float类型的比较,例如
I := 3.08
if I >= 3.08 and I <= 3.09 then
  ShowMessage('在此范围内')
else
  ShowMessage('不在此范围内');
这个执行的结果老是ShowMessage('不在此范围内');
为什么?
我要做这样的比较,要用什么方法?

解决方案 »

  1.   

    if I >= 3.08 and I <= 3.09 then
    改成
    if (I >= 3.08) and (I <= 3.09) then   //加上括号!!!
      

  2.   

    你的I是定义的什么类型啊?是不是Double型???
      

  3.   

    当然是啦。
    从数据库中取出的numeric值,与程序中的一个值比较。
    我跟踪了程序,在执行到这里时,值为
    (3.0800 >= 3.0800) and (3.0800 <= 3.0900)但结果就是那个。我实在是想不通。
      

  4.   

    奇怪了...
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i:Double;
    begin
    I := 3.08;
    if (I >= 3.08) and (I <= 3.09) then
      ShowMessage('在此范围内')
    else
      ShowMessage('不在此范围内');
    end;测试结果是“在此范围内”....
      

  5.   

    回smiler007(笑一笑) 
    我改了一下程序,再次试了一下.
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i:Double;
    begin
      I := DJ.Field.Value; //先将3.08赋给I
      if (I >= 3.08) and (I <= 3.09) then
        ShowMessage('在此范围内')
      else
        ShowMessage('不在此范围内');
    end;
    这样程序执行的结果就是'在此范围内'.....
    我不明白为什么我原来的就会是那个结果,我原来并没有首先赋值给它,而是直接比较,
    if (DJ.Field.Value >= 3.08) and (DJ.Field.Value <= 3.09) then
    但值在跟踪时显示的是3.0800,为什么就会显示 '不在此范围内'..
    不明白.