DB2—算术计算和舍入



考虑到应税金额(应纳税)、天数和利率,我必须计算所应用的利息(使用复合利率公式),但是我在DB2 V12 (Z/OS)应用浮点数和四入时遇到问题。

(注意:DB2 LUW上的相同语句不会给我带来问题)

我期望的利息价值是17,84欧元,而我得到17,86欧元

我正在使用这个语句:

SELECT CAST(CAST(RATEABLE AS DECFLOAT)
* ( 1 - ( POWER ( (  1 + CAST(RATE AS DECFLOAT) / 100 ),
( -1 * CAST(NUMBER_DAYS AS DECFLOAT) / CAST(DIVISOR AS DECFLOAT) )
)
)
) AS DECIMAL(18, 2)
) AS PAYMENT_INTEREST
FROM  (
--- I simulate accessing my DB2 table.
SELECT CAST(92247.38 AS DECIMAL(18, 2))     AS RATEABLE,
CAST(0.249000 AS DECIMAL(12, 6))     AS RATE,
INTEGER(28)                          AS NUMBER_DAYS,
INTEGER(360)                         AS DIVISOR
FROM   SYSIBM.SYSDUMMY1
)  AS TEMP

如果我定义了&;rate &;字段为DEC(12,3),计算是正确的,但显然我无法用更多的小数来管理更多的比率。

现在,我在这里错过了什么?

谢谢。

不要使用float数据类型,因为它们会给你这个问题。只需将字段定义为具有足够小数点的小数,以容纳所需的数据。如果您需要以低精度显示它们,则可以在查询中将它们舍入

最新更新