使用这个语句时
valcc:= StrToFloat(ADOQuery1.Fields.Fields[0].Value);用单步调试ADOQuery1.Fields.Fields[0].Value 值查看是 22.3725可赋值给valcc后 valcc的值却是4136.71777343为什么?ADOQuery1.Fields.Fields[0].Value 值是通过查询时使用sum()计算出来的。

解决方案 »

  1.   

    ADOQuery1.Fields.Fields[0].Value改为ADOQuery1.Fields.Fields[0].AsString试试
      

  2.   


    还是不行仔细看了下:
    ADOQuery1.Fields.Fields[0].Value 为4136.718而
    valcc 被赋值后为 4136.71777343怎么回事? 更精确了?
    但是看数据库里面的数据,手动加了下,本来就是4136.718
    后面那些多出来的小数位从那来的?
    晕啊~
      

  3.   

    ADOQuery1.Fields.Fields[0].AsFloat试试,另外出错是报什么?
      

  4.   

    出错就指的 赋值 的值不对 没跳什么信息。按AsFloat 反倒出错了 显示:invalid variant operation
      

  5.   

    忘了讲
    valcc 数据类型是 Single。
      

  6.   


    在详细说明下问题:sql语句:
    select sum(aa) from 表一;表一 中只有一条记录 ,该记录字段 aa 的值为 4136.718 字段类型为 文本。
    使用这个语句时
    valcc:= StrToFloat(ADOQuery1.Fields.Fields[0].Value);用单步调试ADOQuery1.Fields.Fields[0].Value 值查看是 4136.718可赋值给valcc后 valcc的值却是4136.71777343  
     
    刚才这样试了下:
    讲ACCESS数据库中aa 字段的类型改为 单精度浮点
    这时ADOQuery1.Fields.Fields[0].Value 为 4136.71777343 可数据库中明明值为4136.718
      

  7.   

    又试了试 var 
       ddd::Singlebegin
      ddd:=StrToFloat(edit1.text);
    end;
    这时 
    edit1.text 为4323.12但是语句执行后 ddd 还是0 为什么?我彻底崩溃了
      

  8.   

    难道是下载的delphi7 有问题?!
      

  9.   

    各种数据类型的精度不一样,将valcc改为Float会怎样,或改为string。
      

  10.   

    valcc 后面需要进行算数计算。
    delphi 中 不能声明Float类型吧?
    Single 应该就是 单浮点精度吧?
     
      

  11.   

    valcc:real就可OK了,直接valcc:= ADOQuery1.Fields.Fields[0].Value;就可以了
      

  12.   

    format函数可以用来控制数据的精度。
      

  13.   

    昨天回家尝试多次
    发现 Single 这个类型在delphi中 好像有点奇怪
    用double 或者real 都没问题所以搞不明白了,single不就是单精度浮点  4字节。
    doubule 是8字节 双精度浮点吗?为什么会出现这个问题呢?
      

  14.   

    你要定義為doubule或real,float是浮點類型