尝试在DB2中将十进制转换为十进制

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

我手上有25.555,我想把它换成25.555000。
我使用了CAST(25.555 AS DEC(9,6)),但得到的结果是25.554999。
注:有些工作正常(例如:16.667至16.667000),但并非全部。
1.第一个整数是位数的总数,其范围可以从1到3。
1.第二个整数是小数点右边的位数,其范围可以从0到6。

eulz3vhy

eulz3vhy1#

不要将枚举数强制转换为DOUBLE
将其转换为DEC (25),根据Decimal arithmetic in SQLDEC (25) / INT得到DEC (31, 6)(请看Division的公式)。

VALUES 
-- CAST (CAST (SUBSTRING (SUBSTRING ('0103019780199999910006025555000', 1, 36), 23, 9) AS DOUBLE  ) / 1000000  AS DEC (9, 6))
   CAST (CAST (SUBSTRING (SUBSTRING ('0103019780199999910006025555000', 1, 36), 23, 9) AS DEC (25)) / 1000000  AS DEC (9, 6))
;

相关问题