货币金额计算(JAVA)

时间:2019-09-30 10:08:24   收藏:0   阅读:444

货币计算避免用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
}

 

原文:https://www.cnblogs.com/kiko2014551511/p/11610971.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!