BigDecimal 小数舍入模式

BigDecimal 小数舍入模式

 public static void main(String[] args) {
        log.info("启动");
        BigDecimal num = new BigDecimal("123.4567");//255.4631取值小数点后的位数
        //取值小数点后的位数
        System.out.println(num.scale());//结果:4
        //取值并保留一位小数,直接删除多余的小数位
        System.out.println(num.setScale(1, BigDecimal.ROUND_DOWN));//结果:123.4
        //取值并保留一位小数,进位处理
        System.out.println(num.setScale(1, BigDecimal.ROUND_UP));//结果:123.5
        num = new BigDecimal("3.45");//1.35
        //取值并保留一位小数,四舍五入 向下舍
        System.out.println(num.setScale(1, BigDecimal.ROUND_HALF_DOWN));//结果:3.4
        //取值并保留一位小数,四舍五入 向上舍
        System.out.println(num.setScale(1, BigDecimal.ROUND_HALF_UP));//结果:3.5
    }
  • ROUND_CEILING //向正无穷方向舍入

  • ROUND_DOWN //向零方向舍入

  • ROUND_FLOOR //向负无穷方向舍入

  • ROUND_HALF_DOWN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5

  • ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN

  • ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6

  • ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式

  • ROUND_UP //向远离0的方向舍入

  • 需要对BigDecimal进行截断和四舍五入可用setScale方法,例:

public static void main(String[] args){
    BigDecimal num = new BigDecimal("12.3456");
    num  = num .setScale(3, RoundingMode.HALF_UP);//保留3位小数,且四舍五入
    System.out.println(num);//结果:12.346
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值