Qry_in_storage_detail.FieldByName('sum_weight').AsFloat:= Qry_in_storage_detail.FieldByName('goods_weight').AsFloat*Qry_in_storage_detail.FieldByName('goods_quantity').AsInteger;在数据库中定义了sum_weight,goods_weight为数值型保留八位小数,然而在DBGRID中goods_weight显示没有问题,但是sum_weight计算出来保留八位小数就出问题,比如goods_weight=0.21 goods_quantty=120,计算出来的结果是:25.19999999 而不是25.20000000,请各位大师指点一下,谢谢

解决方案 »

  1.   

    sum_weight,goods_weight数据库中是numeric型的,DELPHI中 Qry_in_storage_detail.FieldByName('sum_weight').AsFloat:= Qry_in_storage_detail.FieldByName('goods_weight').AsFloat*Qry_in_storage_detail.FieldByName('goods_quantity').AsInteger;   asfloat是保留近似值,AsCurrency只能保留到四位小数,请问怎么样才能保留八位小数,并且计算结果准确  
      

  2.   

    浮点类型就是这样的。
    你要用FormatFloat函数来格式化后显示。
      

  3.   

    FormatFloat函数只能根据内容显示保留位数,目前我是想保留八位小数,但目前就是因为小数位的问题本来是25.20000000的结果,但是显示成了25.19999999
      

  4.   

    估计你的数据库用的是ACCESS,数据类型为单精度数字.
    改为双精度,或是小数都可以解决这个问题.
      

  5.   

    我是用的SQL
      

  6.   

    SQL SERVER2008数据类型为float,测试无浮点精度的问题。
    查询如下,运算 0.21*120=25.2 :
    select * ,goods_weight*goods_quantity from table_b
      

  7.   

    比如:FormatFloat('0.00000000',22.22);结果就是22.22000000,没明白楼主说的:FormatFloat函数只能根据内容显示保留位数什么意思。还有就是,你把数据插入数据库的时候,用FormatFloat先定一下位数,写过进销存,表示没有这样的计算错误。