我需要将一个数字四舍五入到最接近 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;
格飞的解决方案是有效的,但我必须像这样显式转换为 double :5*(Math.round((double)f/5))
此页面上还有许多其他解决方案,但我相信这是最简洁的一个。
要找到给定数字的 x 的最接近倍数,
令 x 为倍数, num 为给定数:
// The closest multiple of x <= num
int multipleOfX = x * ( num / x );
在你的情况下:
int multipleOf5 = 5 * ( num / 5 );
如果您有一个整数作为输入,否则接受的答案会将其四舍五入。
int value = 37;
value = (int) ( Math.round( value / 5.0 ) * 5.0 );