我正在寻找一个简单的java函数代码来舍入一些小数,
示例: 输入数字将始终采用此格式#。## 所以代码应该这样做:
输入100.00 结果100.00舍入0.00 输入100.01 结果100.00舍入-0.01 输入100.02 结果100.00舍入-0.02 输入100.03 结果100.05舍入+0.02输入100.04 结果100.05舍入+0.01
我不确定是否有可以提供此结果的java函数。
答案 0 :(得分:0)
要舍入到最接近的0.05,一种简单的方法是乘以20,舍入到最接近的整数,然后除以20。
100.00 * 20 = 2000.00 round-> 2000 2000/20 = 100.00
100.02 * 20 = 2000.20 round-> 2000 2000/20 = 100.00
100.04 * 20 = 2000.80 round-> 2001 2001/20 = 100.05
100.06 * 20 = 2001.20 round-> 2001 etc
100.07 * 20 = 2001.40 round-> 2001
100.08 * 20 = 2001.60 round-> 2002
您必须决定100.025会发生什么,这将决定您是使用ROUND_HALF_UP,ROUND_HALF_DOWN还是ROUND_HALF_EVEN。
答案 1 :(得分:0)
我知道这不是Java方法。但为什么不使用模数? :)
public static void main(String[] args) {
for (float number = 0; number<1; number+=0.01f){
float rounded = round(number);
System.out.printf("%f -> %.2f\n", number, rounded);
}
}
public static float round(float number){
float ret;
float mod = number % 0.05f;
if (mod < 0.05f / 2 ){
ret = number - mod;
}else{
ret = number + (0.05f - mod);
}
return(ret);
}
输出
0.000000 -> 0.00
0.010000 -> 0.00
0.020000 -> 0.00
0.030000 -> 0.05
0.040000 -> 0.05
0.050000 -> 0.05
0.060000 -> 0.05
0.070000 -> 0.05
0.080000 -> 0.10
0.090000 -> 0.10
0.100000 -> 0.10
0.110000 -> 0.10
0.120000 -> 0.10
0.130000 -> 0.15
0.140000 -> 0.15
0.150000 -> 0.15
0.160000 -> 0.15
0.170000 -> 0.15
0.180000 -> 0.20
0.190000 -> 0.20
0.200000 -> 0.20
0.210000 -> 0.20
0.220000 -> 0.20
0.230000 -> 0.25
0.240000 -> 0.25
0.250000 -> 0.25
0.260000 -> 0.25
0.270000 -> 0.25
...
我没有在你的问题中看到任何负面价值。所以我想这就够了: - )