1. 程式人生 > >BigDecimal 精度丟失的問題

BigDecimal 精度丟失的問題

當在oracle中設定欄位為number型別時,使用jdbc直接取值後會轉化為BigDecimal。可以使用 getDoubleValue() 方法來轉型。如果直接將值傳輸到前臺,則計算結果會取整,損失精度。

可以使用一下標籤進行型別轉換。

<fmt:parseNumbervalue="${payment.unPayAmount}" var="pageUnPayAmount" />

<fmt:formatNumbervalue="${pageUnPayAmount / 100}" pattern="#,##0.0#" />

當然這樣比較麻煩,最後我是在後臺controller類中進行了一個迴圈轉換

public List<Map<String,Object>> deciToDouble(List<Map<String, Object>> list){
List<Map<String,Object>> dataList= new ArrayList<Map<String,Object>>();
for(Map<String,Object> map :list){
for (String in : map.keySet()) {
try {
double value=((BigDecimal) map.get(in)).doubleValue();
map.put(in, value);
} catch (Exception e) {
}
}
dataList.add(map);
}
return dataList;

}

不知道有沒有直接將資料庫中的值對映為double型別的方法?