今天在写保险公司组装报文的接口时,发现保费对不上,结果发现price这个值是58.999966后面反正就是一大串数字,然后乘以100(保险公司那边要求按分),经过了intValue(),给我截取:
原本是这样写的:
Double price=Double.valueOf(mapExtra1.get("price0")!=null?mapExtra1.get("price0").toString():"")*100;item.Premium=price.intValue();
更改后:
Double price=Double.valueOf(mapExtra1.get("price0")!=null?mapExtra1.get("price0").toString():"")*100;item.Premium=(int) Math.round(price.doubleValue());
看下面的例子以及输出结果,可能更加容易明白:
Double price=Double.valueOf(100.435346345657)*100;System.out.println(price);System.out.println((int) Math.round(price.doubleValue()));System.out.println(price.intValue());
10043.5346345657
10044
10043