在从数据库中获取类型为decimal的值时,在controller那层获取到的值为0E-8,这就很纳闷了,因为这个值是不能与其他的数值进行相加减的,为什么会出现这种情况呢,问题的原因就是:因为数据库中的值为0,而在controller那层获取值时就不能转换,所以必须将0E-8转换为0,我试了两个方法:
第一个方法(方便:只是获取值):将获取到的值直接转换为0,代码为:(new BigDecimal("0E-8")).doubleValue();
但是这个方法到后面如果需要对比两个bigDecimal的值然后再存入数据库的时候就要转换回来,所以这个对于只是获取值的时候蛮方便的。
第二个方法(方便:获取值与运算):
例子:类型为decimal相加,一个为0,一个不为0
CnyAccountRecharge cnyAccountRecharge=accountRechargeService.findById(id);//第一张表
CnyAccountInfo cnyAccountInfo =cnyAccountInfoService.findById(infoId);//通过id找到第二张表
BigDecimal reAmt = cnyAccountRecharge.getRechargeAmt();//获取到对应类型的值,这里的getAmt就是decimal类型的(这里的decimal类型的值不是为 0 的)
String amt = String.valueOf(cnyAccountInfo.getAmt());//用一个String装获取到的值,这里的getAmt就是decimal类型的(amt是为0的,所以给它进行做判断)
if(amt.equals("0E-8")){ //给它加一个判断
amt ="0" ; //将0赋予给amt
}
cnyAccountInfo.setAmt(new BigDecimal(amt).add(reAmt));//将reAmt与amt相加然后传进数据库中