考虑到应税金额(应纳税)、天数和利率,我必须计算所应用的利息(使用复合利率公式),但是我在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数据类型,因为它们会给你这个问题。只需将字段定义为具有足够小数点的小数,以容纳所需的数据。如果您需要以低精度显示它们,则可以在查询中将它们舍入