Dashdb圆问题

时间:2017-05-12 07:09:11

标签: db2 rounding db2-luw dashdb

我们正在执行以下查询以获取一些聚合数据,问题是对于某些行,舍入是有效的,因为某些舍入不起作用并且在小数点后显示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 

1 个答案:

答案 0 :(得分:1)

我认为行为是您选择将数字转换为数据类型DOUBLE的结果,这是实数的近似值。因此,内置的ROUND函数可能会返回您所看到的“意外”结果。例如

SELECT ROUND((DOUBLE(1) * DOUBLE(1)) / DOUBLE(1)*100, 2) FROM SYSIBM.SYSDUMMY1 

在我的环境100.00000000000001中返回。

您可以使用数据类型DECIMAL吗?