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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值