Java浮点数运算实现四舍五入和格式化方法总结

method 1

/**
         * method 1 值舍入时推荐
         */
        String srcBlance = "82.54466";
        double rate = 0.01;
        double f = Double.parseDouble(srcBlance);
        //BigDecimal b = new  BigDecimal(f * rate); /** 会有精确性问题*/
        BigDecimal b = new  BigDecimal(new Double(f * rate).toString()); /** 不会有精确性问题*/
        double f1  =  b.setScale(0, RoundingMode.HALF_UP).doubleValue();
        long extBalance = NumUtils.roundToLong(String.valueOf(f1)); /** roundToLong具备自动将浮点数进行整数化功能*/
        System.out.println(extBalance);

method 2

/**
         * method 2 值舍入时推荐
         */
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(2);
        nf.setRoundingMode(RoundingMode.UP);
        System.out.println("method2: "+ nf.format(f));

method 3

/**
         * method 3 仅仅格式化 保证精确
         */
        DecimalFormat df = new DecimalFormat("#.000");
        System.out.println("method3:" + df.format(f));

method 4

/**
         * method 4 仅仅格式化 保证精确
         */
        System.out.println(String.format("%.2f", f));

RoundingMode

目前java支持7中舍入法:
         1、 ROUND_UP:远离零方向舍入。向绝对值最大的方向舍入,只要舍弃位非0即进位。
         2、 ROUND_DOWN:趋向零方向舍入。向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。
         3、 ROUND_CEILING:向正无穷方向舍入。向正最大方向靠拢。若是正数,舍入行为类似于ROUND_UP,若为负数,舍入行为类似于ROUND_DOWN。Math.round()方法就是使用的此模式。
         4、 ROUND_FLOOR:向负无穷方向舍入。向负无穷方向靠拢。若是正数,舍入行为类似于ROUND_DOWN;若为负数,舍入行为类似于ROUND_UP。
         5、 HALF_UP:最近数字舍入(5进)。这是我们最经典的四舍五入。
         6、 HALF_DOWN:最近数字舍入(5舍)。在这里5是要舍弃的。
         7、 HAIL_EVEN:银行家舍入法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FeelTouch Labs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值