Java(Double强转Int)精度丢失问题

问题:提现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,正确!!



发布了74 篇原创文章 · 获赞 58 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/Jason_996/article/details/80833540