下列代码使一个按钮的代码,
procedure TFrm1.Button2Click(Sender: TObject);
var s:double;
begin
s:=2.95;
if s<>2.95 then showmessage('不相等');
end;
竟然运行后真的出现了“不相等”的提示,难道2.92不等于2.95?真是奇怪了!是不是我的变量s的类型定义不合适?

解决方案 »

  1.   

    不是
    你跟踪一下就知道了
    if s<>2.95
    这个2。95的值是2
    你可以再写一个变量
    var
    a,b:double;
    begin
    a:=2.95;
    b:=2.95;
    if a<>b then showmessage('不相等');
    end;
      

  2.   

    那我该怎样判断,我的数值都是有两位小数的,
    那个2.95不是2,我用showmessage(floattostr(s))显示时也正确,显示2.95
    我这种情况怎样判断?
      

  3.   

    s:=2.95;
    if FLoattoStr(s) = '2.95'
    这样就可以了
      

  4.   

    var s:currency;
    begin
    begin
    s:=2.95;
    if s<>2.95 then
    showmessage('不相等');
    end;
    Currency 数据类型是为了操作很精确的四位小数货币数值才添加的。
      

  5.   

    换成currency以后就应该没问题了吧,这个数据类型可能就相当于sql里面的numeric
      

  6.   

    可以了,我真是被delphi搞糊涂了,他的帮助上的数据类型讲的不是很清楚
    阿飞的也可以,不过还要转换一次
      

  7.   

    不是S的值是2。95
    而是你写S<>2.95//这个2。95的值成2了
    你换一个类型或者这么写也可以
    if floattostr(s)<>'2.95'