我们正在执行以下查询以获取一些聚合数据,问题是对于某些行,舍入是有效的,因为某些舍入不起作用并且在小数点后显示10位数。所选列的数据类型为integer
且数据正确无误,请帮我们解决问题。
Select
round(
DOUBLE(sum(IDEAL_CYCLE_TIME)) * DOUBLE(sum(PARTS_PRODUCED_COUNT))
/ DOUBLE(sum(RUNNING_TIME_COUNT))*100,
2) as value
From PERFORMANCE_AGGR_MONTH_FACT
Where ORG_DIM='O1' AND MONTH_NUMBER BETWEEN 1 AND 10
答案 0 :(得分:1)
我认为行为是您选择将数字转换为数据类型DOUBLE的结果,这是实数的近似值。因此,内置的ROUND函数可能会返回您所看到的“意外”结果。例如
SELECT ROUND((DOUBLE(1) * DOUBLE(1)) / DOUBLE(1)*100, 2) FROM SYSIBM.SYSDUMMY1
在我的环境100.00000000000001
中返回。
您可以使用数据类型DECIMAL吗?