我需要将一个数字四舍五入到最接近的5的倍数(向上或向下)。例如,以下是数字列表及其需要四舍五入的结果。
12.5 10
62.1 60
68.3 70
74.5 75
80.7 80
数字将仅为正数。
我没有测试过,但是 5*(Math.round(f/5));
应该可以工作
最接近且大于指定值的5的倍数
5*(Math.ceil(Math.abs(number/5)));
低值优先
5*(Math.floor(Math.abs(number/5)));
它只会提供正数值。
public static void main(String args[]) {
double num = 67.5;
if (num % 5 == 0)
System.out.println("OK");
else if (num % 5 < 2.5)
num = num - num % 5;
else
num = num + (5 - num % 5);
System.out.println(num);
}
return round((number/5))*5;
Gefei的解决方案是可行的,但我必须明确地将其转换为double,就像这样:5*(Math.round((double)f/5))
如果输入的是整数,则不做处理;否则,接受的答案会向下舍入。
int value = 37;
value = (int) ( Math.round( value / 5.0 ) * 5.0 );
这个页面上有许多其他解决方案,但我认为这是最简洁的一个。
要找到给定数字的最接近x的倍数,
让x成为倍数,num成为给定数字:
// The closest multiple of x <= num
int multipleOfX = x * ( num / x );
最初的回答:
int multipleOf5 = 5 * ( num / 5 );