Oracle number類型查詢時,有時候會遇到精度丟失的問題,下面為您介紹了一個解決Oracle number類型查詢精度丟失的方法,供您參考。
一、Oracle number類型查詢需求中要求查到一個字段的值然后保持小數點后2位//如果采用如下方法從ResultSet得到一個數字,而這個數字大於40000,則得到的數據將不准確
floatzcxxhj+=rss.getFloat(3);
//而如果采用double就沒有問題
doublezcxxhj+=rss.getDouble(3);
//四舍五入小數點后2位
list.add(newBigDecimal(zcxxhj).setScale(2,BigDecimal.ROUND_HALF_UP));
二,如果Oracle number類型查詢要求從數據庫查出來的數保持到小數點后2位,然后直接再前台展示那么我們可以采用如下查詢方法:例子:
selectfpdm, fphm, fkdw, to_char(kprq,'yyyy-mm-dd'), to_char(xxhj,'FM9999999999990.00'), Decode(fpzt,'1','正票','2','紅票','3','廢票') fromwskp_fpkj_zbxx_111000861071 where11=1 andnsrsbh='110999999999999'
其中的xxhj是number類型,我們可以將其通過 to_char(xxhj, 'FM990.00'),保持小樹點后最少2位,小數點前面做多3位,最少1位;又如 to_char(xxhj, 'FM9990.0099'),就是保持小數點后最少2位,最多4位,小數點前面做多4位,最少1位 三、如果要求查到的數相加后保持小樹點后2位
doubled=rss.getDouble(3)+rss.getDouble(4); BigDecimalbigDecimal=newBigDecimal(d).setScale(2,BigDecimal.ROUND_HALF_UP); beanData.setXxhj(bigDecimal.toString());