我的数据库中的数据是单精度固定小数点后三位小数的 但是我提取出来转换成文本格式的时候,在txt文件里面 小数点后面就是11位了请问这个问题如何解决 我的程序如下 请指点一下
procedure TForm2.Button3Click(Sender: TObject);
var
strlist1:tstringlist;
str:string;
i:integer;
begin
  str:='';
 with adoquery2 do
 begin
    close;
    sql.Clear;
    sql.Add('select * from  ygprint where 井号='''+edit2.text+''' order by 归位深度 asc');
    open;
    (adoquery2.FieldByName('油质发光面积') as TFloatField).displayFormat := '0.000';
     (adoquery2.FieldByName('油质荧光亮度') as TFloatField).displayFormat := '0.00';
     (adoquery2.FieldByName('胶质发光面积') as TFloatField).displayFormat := '0.000';
     (adoquery2.FieldByName('胶质荧光亮度') as TFloatField).displayFormat := '0.00';
     (adoquery2.FieldByName('沥青质发光面积') as TFloatField).displayFormat := '0.000';
     (adoquery2.FieldByName('沥青质荧光亮度') as TFloatField).displayFormat := '0.00';
     (adoquery2.FieldByName('水发光面积') as TFloatField).displayFormat := '0.000';
     (adoquery2.FieldByName('水荧光亮度') as TFloatField).displayFormat := '0.00';
     (adoquery2.FieldByName('色差') as TFloatField).displayFormat := '0.00';
    first;
    if savedialog1.Execute then
    begin
    strlist1:=tstringlist.Create;
    str:=fields[4].FieldName;
    for i:=5 to adoquery2.Fields.Count-1 do
       str:=str+' '+fields[i].FieldName;
       strlist1.Add(str);
      while not eof do
      begin
         str:='';
         str:=fieldbyname('归位深度').AsString+' '+ fieldbyname('油质波长均值').AsString +' '+fieldbyname('油质发光面积').AsString +' '+fieldbyname('油质荧光亮度').AsString+' '+ fieldbyname('胶质波长均值').AsString +' '+fieldbyname('胶质发光面积').AsString +' '+fieldbyname('胶质荧光亮度').AsString+' '+ fieldbyname('沥青质波长均值').AsString +' '+fieldbyname('沥青质发光面积').AsString +' '+fieldbyname('沥青质荧光亮度').AsString+' '+ fieldbyname('水波长均值').AsString +' '+fieldbyname('水发光面积').AsString +' '+fieldbyname('水荧光亮度').AsString+' '+ fieldbyname('色差').AsString +' '+fieldbyname('含油性评价指数').AsString ; //提取数据库中的信息        strlist1.Add(str);
        next;
      end;
      strlist1.SaveToFile(savedialog1.FileName);      strlist1.Free;
     end;
     end;
end;

解决方案 »

  1.   

    其实有点不明白,只是任想像看能否为你解决问题:
    1.相关函数:function Gtow(s:string):string;
    begin
    {例如:S=12.00000000000,返回12.000}
    Result:=copy(s,1,pos('.',s)-1)+copy(s,pos('.',s),4);
    end;
    2.处理:procedure TForm2.Button3Click(Sender: TObject); 
    var 
    strlist1:tstringlist; 
    str:string; 
    i:integer; 
    begin 
      str:=''; 
    with adoquery2 do 
    begin 
        close; 
        sql.Clear; 
        sql.Add('select * from  ygprint where 井号='''+edit2.text+''' order by 归位深度 asc'); 
        open; 
        (adoquery2.FieldByName('油质发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('油质荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('胶质发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('胶质荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('沥青质发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('沥青质荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('水发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('水荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('色差') as TFloatField).displayFormat := '0.00'; 
        first; 
        if savedialog1.Execute then 
        begin 
        strlist1:=tstringlist.Create; 
        str:=fields[4].FieldName; 
        for i:=5 to adoquery2.Fields.Count-1 do 
          str:=str+' '+fields[i].FieldName; 
          strlist1.Add(str); 
          while not eof do 
          begin 
            str:=''; 
            str:=fieldbyname('归位深度').AsString+' '+ fieldbyname('油质波长均值').AsString +' '+fieldbyname('油质发光面积').AsString +' '+fieldbyname('油质荧光亮度').AsString+' '+ fieldbyname('胶质波长均值').AsString +' '+fieldbyname('胶质发光面积').AsString +' '+fieldbyname('胶质荧光亮度').AsString+' '+ fieldbyname('沥青质波长均值').AsString +' '+fieldbyname('沥青质发光面积').AsString +' '+fieldbyname('沥青质荧光亮度').AsString+' '+ fieldbyname('水波长均值').AsString +' '+fieldbyname('水发光面积').AsString +' '+fieldbyname('水荧光亮度').AsString+' '+ fieldbyname('色差').AsString +' '+fieldbyname('含油性评价指数').AsString ; //提取数据库中的信息         str:=Gtow(str);{--------------新加入了这句}        strlist1.Add(str); 
            next; 
          end; 
          strlist1.SaveToFile(savedialog1.FileName);       strlist1.Free; 
        end; 
        end; 
    end;
      

  2.   

    一时不小心处理错了修正以下的:str:=Gtow(fieldbyname('归位深度').AsString)+' '+Gtow(fieldbyname('油质波长均值').AsString) +' '+Gtow(fieldbyname('油质发光面积').AsString) +' '+Gtow(fieldbyname('油质荧光亮度').AsString)+' '+Gtow(fieldbyname('胶质波长均值').AsString) +' '+Gtow(fieldbyname('胶质发光面积').AsString) +' '+Gtow(fieldbyname('胶质荧光亮度').AsString)+' '+Gtow(fieldbyname('沥青质波长均值').AsString) +' '+Gtow(fieldbyname('沥青质发光面积').AsString) +' '+Gtow(fieldbyname('沥青质荧亮度').AsString)+' '+Gtow(fieldbyname('水波长均值').AsString)+' '+Gtow(fieldbyname('水发光面积').AsString) +' '+Gtow(fieldbyname('水荧光亮度').AsString)+' '+Gtow(fieldbyname('色差').AsString) +' '+Gtow(fieldbyname('含油性评价指数').AsString) ; //提取数据库中的信息
      

  3.   

    str:=Gtow(str);{--------------新加入了这句}此句DEL掉
      

  4.   

    连成字符串时可以格式化一下,如:Format('%.3f', [7.0033003])
      

  5.   

    来一个完整的:procedure TForm2.Button3Click(Sender: TObject); 
    var 
    strlist1:tstringlist; 
    str:string; 
    i:integer; 
    begin 
      str:=''; 
    with adoquery2 do 
    begin 
        close; 
        sql.Clear; 
        sql.Add('select * from  ygprint where 井号='''+edit2.text+''' order by 归位深度 asc'); 
        open; 
        (adoquery2.FieldByName('油质发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('油质荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('胶质发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('胶质荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('沥青质发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('沥青质荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('水发光面积') as TFloatField).displayFormat := '0.000'; 
        (adoquery2.FieldByName('水荧光亮度') as TFloatField).displayFormat := '0.00'; 
        (adoquery2.FieldByName('色差') as TFloatField).displayFormat := '0.00'; 
        first; 
        if savedialog1.Execute then 
        begin 
        strlist1:=tstringlist.Create; 
        str:=fields[4].FieldName; 
        for i:=5 to adoquery2.Fields.Count-1 do 
          str:=str+' '+fields[i].FieldName; 
          strlist1.Add(str); 
          while not eof do 
          begin 
            str:=''; 
            str:=Gtow(fieldbyname('归位深度').AsString)+' '
            +Gtow(fieldbyname('油质波长均值').AsString)+' '
            +Gtow(fieldbyname('油质发光面积').AsString)+' '
            +Gtow(fieldbyname('油质荧光亮度').AsString)+' '
            +Gtow(fieldbyname('胶质波长均值').AsString)+' '
            +Gtow(fieldbyname('胶质发光面积').AsString)+' '
            +Gtow(fieldbyname('胶质荧光亮度').AsString)+' '
            +Gtow(fieldbyname('沥青质波长均值').AsString)+' '
            +Gtow(fieldbyname('沥青质发光面积').AsString)+' '
            +Gtow(fieldbyname('沥青质荧光亮度').AsString)+' '
            +Gtow(fieldbyname('水波长均值').AsString)+' '
            +Gtow(fieldbyname('水发光面积').AsString)+' '
            +Gtow(fieldbyname('水荧光亮度').AsString)+' '
            +Gtow(fieldbyname('色差').AsString)+' '
            +Gtow(fieldbyname('含油性评价指数').AsString); //提取数据库中的信息         
            strlist1.Add(str); 
            next; 
          end; 
          strlist1.SaveToFile(savedialog1.FileName);       strlist1.Free; 
        end; 
        end; 
    end;