本人用delphi在前台做了一个界面,后台用oracle 10数据库,在数据中有一个表(XZ_ZHIXIANGGENE),表中有个字段GPROVIDECODE 是NUMBER类型,其数据全是1.366686680479503,小数位后通常有10位数以上,本人在前台用DBGridEh做表格,ADODataSet为连接,在CommandText中的代码是'select GPROVIDECODE from XZ_ZHIXIANGGENE'。但结果出来的数据是1.3667。无论怎么设置FieldDefs[i]中的DataType类型和小数点位都无法得出1.366686680479503的效果。请教各位怎么完整显示这个浮点数类型字段。

解决方案 »

  1.   

    var
      Str:string;
    begin
      Str = Format('%0.15f',[GPROVIDECODE ]);
    end;
      

  2.   

    adodataset右键fields editor->选中字段看属性displayformat 设置成:#,##0.###############
      

  3.   

    首先感谢两位的回答:
    但,shenzhensoft的回答我怎么测试也用不了这段代码。
       zxf_feng的回答按此方式设置后还是不起作用.一样是以前的4位小数1.3667。  
    请教各位还有没有其它的方法
      

  4.   

    这个问题我也遇到过,是在Access中如果用小数型就只显示4为小数,但设置成双精度型后,Ado就显示所有小数点后面的位数了,没有用过Oracle,不知到里面有没有和双精度类似的类型,楼主不妨换中类型试一试!
      

  5.   

    首先感谢me2008的回答: 
    me2008的方法我也试过,我试着去改烃变它的字段类型,每个都试过,但是就是不起作用.还是四位小数.
     
      

  6.   

    在GPROVIDECODE字段的
    OnGetText事件中:
    procedure TForm1.qry1GPROVIDECODEGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
      Text := Format('%0.15f',[Sender.AsFloat]);
    end;
      

  7.   

    首先感谢bladz的回答: 
    bladz的方法我也试过,但也是不起作用.因为出现的效果是四位小数是四舍五入,后面全是0.是用0来补足位数.例如:1.366686680479503最后显示的效果是1.36670000000000000. 还是没达到完整显示这个浮点数类型字段的效果。
      

  8.   

    实在不行的话把SQL换成,'select to_char(GPROVIDECODE) as GPROVIDECODE from XZ_ZHIXIANGGENE'
    看看取出来的字串是多少?如果字串是对的就再做个转换.
      

  9.   

    实在不行的话把SQL换成,'select to_char(GPROVIDECODE) as GPROVIDECODE from XZ_ZHIXIANGGENE'
    看看取出来的字串是多少?如果字串是对的就再做个转换.
      

  10.   

    首先感谢willflyz的回答: 
    willflyz的方法我也试用了一下,但也是不起作用.后台能实现转换成字符型,但是前台ADODataSet连接显示在DBGridEh时它自动当作是数字,还是显示1.3667. 还是没达到完整显示这个浮点数类型字段的效果。
      

  11.   

    一定是设置问题了。
    adodataset的那个字段你是什么类型,你首先确认从数据库抓出来的时候是完整的,然后用类似string啊,varchar啊显示,是可以的。
    跟踪一下就知道咯。