首页 > 其他 > 详细

金额分元转换

时间:2021-03-11 17:26:09      阅读:14      评论:0      收藏:0      [点我收藏+]
/**
* 元转分,确保price保留两位有效数字 
* @return
*/
public static int changeY2F(String amount) {
    BigDecimal bigDecimal = new BigDecimal(amount).setScale(2);
    return bigDecimal.multiply(new BigDecimal(100)).intValue();
}

/**
* 分转元,转换为bigDecimal在toString 保留2位小数
* @return
*/
public static String changeF2Y(int price) {
    return BigDecimal.valueOf(Long.valueOf(price)).divide(new BigDecimal(100)).setScale(2).toString();
}

 

拓展:

1、setScale(2)方法其实内部默认传了 ROUND_UNNECESSARY,

  表示结果是精确的值不需要舍入,如果结果的位数和入参不一致将报错

    public BigDecimal setScale(int newScale) {
        return setScale(newScale, ROUND_UNNECESSARY);
    }

 2、BigDecimal.ROUND_DOWN  直接舍掉多余的部分

BigDecimal b = new BigDecimal("2.4599999").setScale(2, BigDecimal.ROUND_DOWN);// 结果2.45

 3、BigDecimal.ROUND_UP  舍弃部分>0就进1

BigDecimal c = new BigDecimal("2.2300001").setScale(2, BigDecimal.ROUND_UP); //结果2.24

 4、BigDecimal.ROUND_HALF_UP  舍弃部分>=5 进1

BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP); //结果2.23

 5、BigDecimal.ROUND_HALF_DOWN 舍弃部分>5进1

BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);//结果2.22

 6、BigDecimal.ROUND_CEILING 类同BigDecimal.ROUND_UP

 7、BigDecimal.ROUND_FLOOR   类同BigDecimal.ROUND_DOWN

 

金额分元转换

原文:https://www.cnblogs.com/lht4026/p/14518872.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!