我的开发环境是Delphi4+SQL Server2000,BDE连接。
有一表中建了一字段为FAdjMoney numeric(10,2),
在程序中赋值语句:  FieldByName('FAdjMoney').AsFloat:=121.6;
但在数据表中却为121.59?
修改字段定义:FAdjMoney numeric(10,1),
运行结果却为121.5?我用查询分析器运行相关SQL赋值语句,结果正确!相信原因在Delphi。
请教各路高手!拜托!

解决方案 »

  1.   


    FieldByName('FAdjMoney').AsString:=FormatFloat('0.00',121.6);
    其中121.6可用float型变量代替。
    试试
      

  2.   

    建议:
    客户端该用Currency类型,可写table1.FieldByName('MyField').AsCurrency
    同时最好服务端用money类型,money也是定点数,但精度更高,或者用decimal(20,4)也可。
      

  3.   

    谢谢forgot和xaocao,我会去试一下。
    但是如果你们说的是正确的话,那用类似以下语句:
    FieldByName('FAdjMoney').AsFloat:=...
    是不是都存在问题呢?
    如果是的话,那我以前编的程序不是都有问题?
    说到这里,很汗颜呀!那些程序是用来发养老保险的呀!
    惭愧!
      

  4.   

    设置BDE连接选项 enable BCD 试试。
      

  5.   

    我试了一下,xaocao(小草)的方法不行,forgot(让一切随风)的方法中,写table1.FieldByName('MyField').AsCurrency也不行,用decimal(20,4)也不行,看来也不关AsFloat的事。唯独用money类型就可以了,奇怪!
    谢谢halfdream(哈欠)的建议,我马上试一下,
    但是为什么用money类型就可以呢?
    再请教!