Java:舍入到最接近的5的倍数(向上或向下)

时间:2013-01-07 13:29:42

标签: java rounding

我需要将数字舍入到最接近的5的倍数(向上或向下)。例如,以下是数字列表及其旁边需要向上/向下舍入的数字。

12.5  10
62.1  60
68.3  70
74.5  75
80.7  80

数字只会是正数。

6 个答案:

答案 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 );