我需要将数字舍入到最接近的5的倍数(向上或向下)。例如,以下是数字列表及其旁边需要向上/向下舍入的数字。
12.5 10
62.1 60
68.3 70
74.5 75
80.7 80
数字只会是正数。
答案 0 :(得分:77)
尚未对其进行测试,但5*(Math.round(f/5));
应该正常运行
答案 1 :(得分:32)
5的最近倍数 为上限值
5*(Math.ceil(Math.abs(number/5)));
为较低值
5*(Math.floor(Math.abs(number/5)));
它只给出正值。
答案 2 :(得分:6)
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);
}
试试这个。
答案 3 :(得分:5)
Gefei的解决方案正在运行,但我必须明确地将其转换为双倍:5*(Math.round((double)f/5))
答案 4 :(得分:3)
这样的事情怎么样:
return round((number/5))*5;
答案 5 :(得分:0)
此页面上还有许多其他解决方案,但是我认为这是最简洁的解决方案。
要查找给定数字x的最接近倍数,
让x为倍数,让num为给定数字:
// The closest multiple of x <= num
int multipleOfX = x * ( num / x );
在您的情况下:
int multipleOf5 = 5 * ( num / 5 );