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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。