货币金额计算(JAVA)

货币计算避免用Float或Double,会丢失精度。建议用BigDecimal

使用场景

  最近在做小程序支付功能,微信提供的统一下单接口金额单位为分,于是需要将金额从元转为分

  最开始使用Float进行计算

public static void main(String[] args) {
        //0.01元
        String fee = "0.01";
        //转为1分
        int money = (int)(Float.parseFloat(fee)*100);
        System.out.println(money);
    }

0.01元是没有问题的,换了一个较大的金额“9999999”,结果计算出来的值为9999998.72

 

于是改用BigDecimal

public static void main(String[] args) {
    //金额,单位元
    String fee = "9999999";
    BigDecimal decimal1 = new BigDecimal(fee);
    BigDecimal decimal2= new BigDecimal(100);
    //金额,单位转为分
    int money =  decimal1.multiply(decimal2).intValue();
    System.out.println(money); //9999999
}

猜你喜欢

转载自www.cnblogs.com/kiko2014551511/p/11610971.html