看看delphi关于这一点的帮助系统,查询关于TFloatValue 类型,以及FloatToDecimal的过程,相信你会找到答案

解决方案 »

  1.   

    float本来就4位呀,你用.Value式式
      

  2.   

    .value试了,
    adodataset.fieldbyname(fieldname).asstring:=floatststr(p);
    也试了
      

  3.   

    float字段有个关于精度的属性,你看看是不是设置了另外属性是不是设置了还有就是在win2000的什么区域设置里有关于小数点精度设置的
      

  4.   

    从问题的现象分析,应该不是数据库创建的问题,而是Delphi处理的问题,建议你用一下double类型,另外多了解一下Delphi的类型,非常严谨的!我以前做了一次试验:声明了一个int64类型a,另外声明了三个Integer变量阿b,c,d并分别赋值,结果我用a:=b*c*d;得出的不是正确的运算结果,而我用三个实际数想乘,结果却是正确的,最后我将三个变量都声明成int64,结果对了!感觉delphi内部运算还是莫名其妙!希望我这点体会能给你帮助!
      

  5.   

    把如下:
    P:=18.3760684;
    adodataset.fieldbyname(fieldname).asfloat:=p;
    adodataset.post;
    变成:
    P:=18.3760684;
    adodataset.fieldbyname(fieldname).AsString:=FloatToStr(p);
    adodataset.post;
      
      

  6.   

    因为在声明时 你声明 的P有DOUBLE 而在
    adodataset.fieldbyname(fieldname).asfloat:=p中
    使用的是FLOAT
    所以数据小数点的位置会发生变化
      

  7.   

    转成字符存进去是一个效果(会自动截断)后经高手指点
    在adodataset的beforeopen中写一句
    adorsMain.EnableBCD:=false
    就搞定了!