晕…!把123456.63写入表中,存的却是123456.74,字段类型是decimal(15,2),哪错了???

解决方案 »

  1.   

    我建议你把字段类型换为:float
    用formatfloat('0.00',(字段))
    进行付值
    也许能解决
      

  2.   

    浮点型的误差。建议如果是金额,使用money类型。但是好像也不应该右那么大的误差呀!
      

  3.   

    用字符型也可以呀!   Char!
      

  4.   

    一般的数据库都有“货币”(现金:currency、money等)类型,用这种类型,不知你用的是那种数据库
      

  5.   

    肯定是别的方面的原因,跟数据类型decimal没关系,我们存金额都用decimal,价格便宜量又足,建议楼主检查确认是否写的就是123456.63
      

  6.   

    这点长度,INT64就可以搞定。(除以100后得到你想要的值)
    长了的话,最好作一套基于字符串的运算库。不简单的。
      

  7.   

    数据库是Sybase SQL Any Where 如果改成double就可以了,但double没法控制小数位数啊…!我是用update 字段a = 字段b*c,所以double不可行:(我用ClientDataSet,如果换Query则可行…!!!!!晕…!
      

  8.   

    呵呵,夸张哦。建议好好检查代码,将插入或更新的SQL显示出来看看。我遇到过16.025舍成16.02的情况,至于63舍成74,就太奇怪了。
      

  9.   

    我就是用adoconnection连数据库,直接提交数据啊…!,而且都是用的感知控件…!,控件肯定没问题…!中间什么处理都没做…!
      

  10.   

    我怀疑楼主跟大家开玩笑.
    在sql server 里decimal和numeric都是精确数据类型,怎么出现这种情况呢?
    如果是float,real类型,还有可能,因为它们才是非精确数据类型.
      

  11.   

    我怀疑楼主跟大家开玩笑.
    在sql server 里decimal和numeric都是精确数据类型,怎么出现这种情况呢?
    如果是float,real类型,还有可能,因为它们才是非精确数据类型.
    同意
      

  12.   

    不是开玩笑…!
    我使用的Sybase SQL Any Where 8.0数据库。
      

  13.   

    现在的问题是:我定义 decimal(6,2),输 入327895.63,竟提示范围越界了:(晕…!
      

  14.   

    回复人: kasm(无极(修炼中~~~)) ( ) 信誉:100  2004-09-25 12:10:00  得分: 0  
     
     
       现在的问题是:我定义 decimal(6,2),输 入327895.63,竟提示范围越界了:(晕…!
     
     
    ----------------当然越界了,整数部分不能6-2=4位。
      

  15.   

    我在SQL SERVER里试了没.63变成.74的问题,SQL Any where却有…!
      

  16.   

    回复人: kasm(无极(修炼中~~~)) ( ) 信誉:100  2004-09-25 12:10:00  得分: 0  
     
     
       现在的问题是:我定义 decimal(6,2),输 入327895.63,竟提示范围越界了:(晕…!
     
     
    ----------------当然越界了,整数部分不能6-2=4位。 +我在SQL SERVER里试了没.63变成.74的问题转入 sybase研究
      

  17.   

    你定义的decimal(6,2)指的是一共6位,其中小数2位,所以整数部分只有4位,因此327895.63越界,不知明白没有……