环境:sqlserver2000,delphi7
由于特殊要求,我的数据库中有关金额都要定精确到小数点后6位,所以在数据库中定义decimal(6),在数据库中填入数据1.123456,刷新显示没有问题;但是用ado在dbgrid中显示时,显示为1.1235,自动截取了;
如果数据类型采用float,用ado在dbgrid中显示是正确的1.123456;但float是不精确的;
问题:
1、有没有什么办法类型定义为decimal(6),用ADO在dbgrid中也能完全显示出小数后6位?
2、如果1不行,是不是小数点操过4位的都要定义成float类型,这样好像decimal类型干脆就限制到小数点4位,为什么在数据库里又可以超过4位呢请高手赐教!

解决方案 »

  1.   

    如果1不行,是不是小数点操过4位的都要定义成float类型,这样好像decimal类型干脆就限制到小数点4位,为什么在数据库里又可以超过4位呢
    ----------------------------------------------------------------------------------
    好像不行,从数据库读出来decimal的时候,小数点后边就只保留4位。至于为什么数据库中可以,那时因为DELPHI和SQL SERVER不是同一个产品,他们由不同厂家提供不同的支持。
      

  2.   

    decimal(18,6);
    这样定义表示18位整数,6位小数,你的定义是错误的。
      

  3.   

    那看来
    在delphi+sql2000的环境中:
    要想小数位保留6,数据类型只能定义成float,那在运算过程中也就可能存在着误差了!
      

  4.   

    lz可以试验一下,在delphi中6位小数的float运算应该是不会出现误差的。