delphi里怎么只显示4位小数啊?代码如下procedure TForm1.Button1Click(Sender: TObject);
varm:variant;
begin
  m:=1.162179;
  edit1.text:=m;
  end;
end.
结果edit1只显示了1.1622阿,后面的被四舍五入了
我把edit1.text:=m换成了edit1.text:=floattostr(m);也是一样啊
谁知道怎么让他显示完全我是新手
谢谢

解决方案 »

  1.   

    var
      m:double;
    begin
      m:=1.162179;
      edit1.text:=floattostr( m );
    end;
      

  2.   

    variant就只能显示4位小数的吗?
    有没有能放任和类型的东西又能显示完全小数的呢?
      

  3.   

    这是个传值中丢失精度的问题,,
    procedure TForm1.Button1Click(Sender: TObject);
    varm:variant;
    begin
    m:=floattostr(1.162179);
    edit1.text:=m;
    end;
    end.这样就没问题了,,,
    当然hongqi162(失踪的月亮的方法也是可行的....
      

  4.   

    为什么会是四位, 楼上几位都没有回答.这个问题比较经典, 在不同的delphi版本显示都有不同, 主要是牵涉到数据类别转换的优先级别.在BDS2006中是可以正确的显示 1.162179, 从汇编码中就知道后台的转换
    Unit1.pas.31: M := 1.162179;
    00454BC7 DB2D184C4500     fld tbyte ptr [$00454c18]
    00454BCD 8D45F0           lea eax,[ebp-$10]
    00454BD0 E89FB7FBFF       call @VarFromReal //这里知道是VarToReal的转换
    在Delphi7中显示是 1.1622, 从汇编码中就知道后台的转换
    Unit1.pas.31: M := 1.162179;
    00454BC7 DB2D184C4500     fld tbyte ptr [$00454c18]
    00454BCD 8D45F0           lea eax,[ebp-$10]
    00454BD0 E89FB7FBFF       call @VarFromCurr //这里知道是VarToCurr的转换, 而Currency只有四位的精度的通过上面的对比可以知道, BDS2006与Delphi7的数据转换优先级别是一样, 看来BDS2006的数据转换与MS相同或是接近. MS SQL2000数据转换优先级别如下:下面是 Microsoft® SQL Server™ 2000 数据类型的优先顺序: sql_variant(最高)datetimesmalldatetimefloatrealdecimalmoney (这里转换到delphi是就是Currency)smallmoneybigintintsmallinttinyintbitntexttextimagetimestampuniqueidentifiernvarcharncharvarcharcharvarbinarybinary(最低) 
      

  5.   

    有事没事定义数据类型还用variant.