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类型的方法?

BigDecimal 精度丢失的问题