假设十进制数是 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
我该怎么做?请帮忙
答案 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。