问题:提现4515.23元,接口需要的这个提现金额是:int类型且单位是分
在处理中出现了精度丢失:
double num=4515.23
int numInt=(int)(num*100)
这个是强转后numInt=451522,少了1分钱(debug:(num*100)=451522.999994,强转精度丢失啦!)
解决方法:用BigDecimal
public static int formatDoubleTOInt(double dou1,double dou2){
BigDecimal big1 = new BigDecimal(Double.valueOf(dou1)).setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal big2 = new BigDecimal(Double.valueOf(dou2));
return big1.multiply(big2).intValue();
}
int numInt= formatDoubleTOInt(num,100.0);
这个值是numInt=451523,正确!!