SQLSEVER2000数据库表中存放的某一字段的数据是0.000031,现在用delphi将这一结果查询出来,确显示为0,只取了前四位小数点,到底应该怎么做啊?急死人了 
ADOQuery1.SQL.Text:='select p as 概率0, z1 as 字段1 ,z2 as 字段2 from 二元频次统计表 where 序号='+inttostr(num)+' ';//查询语句 
ADOQuery1.Open; 
p0:=ADOQuery1.FieldByName('概率0').Asfloat; 
showmessage (floattostr(P0)); 
数据库中P字段的类型是Decimal9(18,6),p0的类型是double,是不是这里有问题啊?

解决方案 »

  1.   

    ShowMessage(formatfloat('0.000000',0.000031));
      

  2.   

    showmessage(format('%.6f',[0.000031]));
      

  3.   

    改为:
    ADOQuery1.SQL.Text:='select Format('%.6f', p) as 概率0, z1 as 字段1 ,z2 as 字段2 from 二元频次统计表 where 序号='+inttostr(num)+' ';//查询语句 
    ADOQuery1.Open; 
    p0:=ADOQuery1.FieldByName('概率0').Asfloat; 
    showmessage (floattostr(P0));
    试试!
      

  4.   

    应该是你显示的时候出的问题,你用什么控件显示数据呢?showMessage 出来的不应该有问题,顶多显示科学计数。把电脑重启一下试试,或者把程序换一台电脑试试,你的程序我觉得没有问题。不建议用format 函数强制显示,因为你的设计本身是正确的,不应该被动解决问题,应该找到根源。
    希望你早日解决
      

  5.   

    楼主,我也刚遇到你这样的问题,不过自己解决了,你把ado的enableBCD设为false再把active选一下true,再选成false,如果说添加字段的,就选删除再添加。这样就可以显示多们小数了,如果是0.000001这种,显示为零,把displayformat高为0.######就可以了,几们小数,几个#号
      

  6.   

    先看看你的sql语句在isqlw中是不是正常地吧!之后再作定论,如果sql
    正常那么就是数据类型不匹配的问题,一己之见