DB2 -算术计算和舍入

f8rj6qna  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(176)

考虑到应纳税额(应纳税)、天数和利率,我必须计算所应用的利息(使用复利公式),但DB2 V12(Z/OS)应用的浮点数和舍入有问题。
(Note: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),则计算是正确的,但显然我无法使用更多的小数来管理更多的汇率。
现在,我错过了什么?

  • 谢谢-谢谢
x9ybnkn6

x9ybnkn61#

不要使用浮点数据类型,因为它们会给你带来这个问题。只要将你的字段定义为小数,并有足够的小数点来保存你需要它们保存的数据。如果你需要以较低的精度显示它们,你可以在你的查询中对它们进行舍入

相关问题