使用十进制数据类型与db2和delphi 2010一起使用货币值

时间:2012-05-06 20:36:57

标签: delphi db2 decimal precision

我正在使用delphi 2010和db2 9.7 Express-C,我有一个数据库,它有几个十进制类型的字段来处理货币值。现在我看到使用它有一些问题,比如9.20值在我的前端显示值9.19999980926514。我需要将数据库中的所有字段更改为DECFLOAT,或者是否存在函数,tfield中的属性或其他替代方法来解决它?

感谢。 戴维斯

1 个答案:

答案 0 :(得分:3)

直接使用货币小数几乎总是一个问题。由于从数据库到您的前端应用程序的转换不同,可能会丢失或获得(这也适用于大多数财务系统 - 请参阅bankers rounding)。


我建议您在进行操作/显示/等之前使用RoundTo功能。关于舍入http://docwiki.embarcadero.com/RADStudio/XE2/en/Floating-Point_Rounding_Issues

的非常好的文章

另一个建议是使用Currency类型。这是一个关于SO的问题,对这种类型How to avoid rounding problems when comparing currency values in Delphi?

有很好的解释