我建表的时候没有考虑好(字段定义错误)以致造成大错。请大家帮忙。非常感谢。表table1其中一个字段Ckh定义float 长度20,以致于保存在数据库里数据
出现了20.999999999999999999999,现在我想运用sql语句将其格式转换问小数点只要求保留3位,请各位大侠帮忙。sql应该怎么写啊?

解决方案 »

  1.   

    select cast(cast(ckh*10 as money) as float)/10
      

  2.   

    各种数据库不知函数是否一样,oracle中:
    select round(field, 3) from table
      

  3.   

    碰到过类似问题:一些经验1.用table的话可以使用计算字段,用format函数控件
    2.我在C++Builder中:
    sql: select ckh from table
    如原数据为20.9
    fCkh = query.fieldbyname("ckh").asfloat;
    如果把fCkh定义为float,会得到20.99999999999999
    fCkh定义为double,会得到20.9
    3.sqlsever中:convert(decimal(17.3),金额)这个函数好像有用,我没用过,你可以试一下
      

  4.   

    如果只是显示三位的话,
    可以设置Field的DisplayFormat为:
    #0.00
      

  5.   

    cbyte99
    我在sql里试过,虽不出错,但是没用。还是那么多位。
      

  6.   

    to dyf2001
    还是不行
    我输入的数据为 427.135
    运行后427.13999999999999to 棋快一步
    你的那个属性我怎么找不到,我用adoquery