56

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

12.5  10
62.1  60
68.3  70
74.5  75
80.7  80

数字只会是正数。

4

7 回答 7

102

没有测试过,但5*(Math.round(f/5));应该可以

于 2013-01-07T13:32:14.093 回答
43

上值的最接近 5 的倍数

5*(Math.ceil(Math.abs(number/5)));

低价值

5*(Math.floor(Math.abs(number/5)));

它只给出正值。

于 2013-01-07T14:08:28.880 回答
7
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);

}

试试这个。

于 2013-01-07T13:37:41.390 回答
6

像这样的东西怎么样:

return round((number/5))*5;
于 2013-01-07T13:32:51.250 回答
5

格飞的解决方案是有效的,但我必须像这样显式转换为 double :5*(Math.round((double)f/5))

于 2016-03-02T08:22:36.833 回答
1

此页面上还有许多其他解决方案,但我相信这是最简洁的一个。

要找到给定数字的 x 的最接近倍数,

令 x 为倍数, num 为给定数:

// The closest multiple of x <= num
int multipleOfX = x * ( num / x );

在你的情况下:

int multipleOf5 = 5 * ( num / 5 );
于 2019-02-02T01:19:22.543 回答
0

如果您有一个整数作为输入,否则接受的答案会将其四舍五入。

int value = 37;
value = (int) ( Math.round( value / 5.0 ) * 5.0 );
于 2021-12-27T17:06:17.737 回答