如何在android studio中将十进制数四舍五入为整数?

时间:2021-06-15 14:39:10

标签: java android android-studio math

假设十进制数是 1.12、8.23、2.35、9.44 和 5.14 我想要的是我想将所有小数点小于 0.3 的数字四舍五入为较小的整数,其余的为较大的整数。

例如

1.12 会变成 1

8.23 会变成 8

2.35 会变成 3

9.44 会变成 10

5.14 会变成 5

我该怎么做?请帮忙

2 个答案:

答案 0 :(得分:0)

此函数根据双精度值与其绝对值之间的差值进行舍入。

1.2 -> 1

1.4 -> 2

private int round(double d){
    double dAbs = Math.abs(d);
    int i = (int) dAbs;
    double result = dAbs - (double) i;
    if(result<0.3){ //you can change this value
        return d<0 ? -i : i;            
    }else{
        return d<0 ? -(i+1) : i+1;          
    }
}

答案 1 :(得分:0)

我更喜欢使用 BigDecimal,因为处理十进制数更精确。

<块引用>

可能与您的情况无关,但对十进制处理仍然有用。 https://dzone.com/articles/never-use-float-and-double-for-monetary-calculatio

private long customRound(Double value) {
        BigDecimal bigDecimalNumber = BigDecimal.valueOf(value);
        Integer intValue = bigDecimalNumber.intValue();
        BigDecimal decimalValue = bigDecimalNumber.subtract(BigDecimal.valueOf(intValue));

        if (decimalValue.compareTo(BigDecimal.valueOf(0.3)) > 0.3) {
            return intValue + 1;
        }
        return intValue;
    }

通过这种方式,我们试图将绝对数和十进制数分开。然后,我们验证小数点是否大于 0.3。