在划分DB2

时间:2017-07-18 14:23:36

标签: sql db2 decimal

当我进行分割时,我面临来自db2的一些奇怪的行为,结果并不包含我所期望的所有十进制数,就好像它总是四舍五入到小数点后第五位。

实施例

SELECT 
dec(dec(1040,4,0)/dec(9,1,0),16,13) as sample
FROM SYSIBM.SYSDUMMY1;

结果

    SAMPLE              
--------------------
115.55556   

从上面的代码中,我预计会有 115.5555555555556 。就像计算器给我的一样。

谢谢, 欧文

2 个答案:

答案 0 :(得分:0)

增加内部DEC的比例和精度是否有效?例如:

SELECT 
dec(dec(1040,16,13)/dec(9,16,13),16,13) as sample
FROM SYSIBM.SYSDUMMY1;

答案 1 :(得分:0)

十进制除法的精度和比例规则是。 。 。让我们使用形容词"奥术"。文档确实尝试explanation

基本上,我建议你增加规模和精度。您可以从您的目标值开始:

SELECT dec(dec(1040, 20, 13) / dec(9, 20, 13), 16, 13) as sample
FROM SYSIBM.SYSDUMMY1;

我将第一个值的比例更改为20,因为16不够大,有13个小数点。