Java float保留n位小数做法

前言

对于Java float的结果想要保留一定的位数,而且需要四舍五入时,可以采用Math.round()处理,该方法是直接返回整数。还可以用DecimalFormat类,或者BigDecimal类的setScale()方法。

一、案例

有一个特别的分数数列,前一个数的分母作为后一个数的分子,后一个数的分母等于前一个数分子和分母之和,如n=4,1/2,2/3,3/5,5/8,求数列的和。

二、三种Java float的小数保留方法

package kdxf;

public class SeqSum {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * <p>
     * 求取指定长度序列的和
     *
     * @param n int整型 序列长度
     * @return float浮点型
     */
    public float seqSum(int n) {
        // 要求保留两位小数。
        // write code here
        float a = 1f, b = 2f, sum = 0f;
        while (n-- > 0) {
            sum += a / b;

            float t = a;
            a = b;
            b += t;
        }
        // (int)(sum * 100) / 100f 不能四舍五入

        // 方案1:Math.round配合浮点数放大与缩小来保留n位小数。
        // return Math.round(sum * 100) / 100f;
        // 方案2:用DecimalFormat类进行format,当然也能format成其他格式,如千分位格式。
        // return new DecimalFormat("0.00").format(sum);
        // 方案3:用BigDecimal类
        // return new BigDecimal(sum).setScale(2,BigDecimal.ROUND_HALF_DOWN).floatValue();
        // setScale()格式化浮点数,第二个参数默认四舍五入;
        // ROUND_DOWN直接删除后面的多余小数;ROUND_UP做直接进位处理;ROUND_HALF_UP/DOWN当小数为5时,向上进位/向下舍去。
        return Math.round(sum * 100) / 100f;
    }
}

总结

1)通过Math.round() + 对数字的放大和缩小来四舍五入;

2)通过DecimalFormat类来format浮点数;

3)通过BigDecimal类的setScale()方法来进行四舍五入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值