2017-05-12 92 views
0

我們正在執行下面的查詢來獲得一些彙總數據,問題是對於某些行舍入很好,因爲某些舍入不起作用,並在十進制後顯示10位數字。所選列的數據類型爲integer,數據正確,請幫助我們解決問題。Dashdb round問題

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

相信的行爲是你的選擇投的數字數據類型DOUBLE,這是一個實數的近似值的結果。因此,內置的ROUND函數可能會返回一個「意外」結果,就像您所看到的一樣。例如

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

返回我的環境100.00000000000001

您可以使用數據類型DECIMAL嗎?