在最近的5X表中将int舍入到最近?

时间:2012-04-08 12:34:03

标签: iphone objective-c ios cocoa ipad

在我的iPhone应用程序中,我需要将整数舍入到最接近的5的倍数。

E.g。第6轮到第10轮,第23轮到第25轮等等。

修改

我忘了说,我只想围捕!在所有情况下,22例如最多可达25例。

7 个答案:

答案 0 :(得分:7)

如果您想要总是向上舍入,可以使用以下内容:

int a = 22;
int b = (a + 4) / 5 * 5; // b = 25;

如果a可以是浮点数,则应该向int添加强制转换,如下所示:

int b = ((int)a + 4) / 5 * 5; // b = 25;

请注意,您可以使用函数ceil来完成相同的结果:

int a = 22;
int b = ceil((float)a / 5) * 5; // b = 25;

旧答案:

要舍入到5的最接近倍数,您可以执行以下操作:

int a = 23;
int b = (int)(a + 2.5) / 5 * 5;

答案 1 :(得分:4)

使用:

int rounded = (i%5==0) ? i : i+5-(i%5);

示例:

    for (int i=1; i<25; i++)
    {
        int k= (i%5==0) ? i : i+5-(i%5);

        printf("i  : %d => rounded : %d\n",i,k);
    }

输出

i  : 1 => rounded : 5
i  : 2 => rounded : 5
i  : 3 => rounded : 5
i  : 4 => rounded : 5
i  : 5 => rounded : 5
i  : 6 => rounded : 10
i  : 7 => rounded : 10
i  : 8 => rounded : 10
i  : 9 => rounded : 10
i  : 10 => rounded : 10
i  : 11 => rounded : 15
i  : 12 => rounded : 15
i  : 13 => rounded : 15
i  : 14 => rounded : 15
i  : 15 => rounded : 15
i  : 16 => rounded : 20
i  : 17 => rounded : 20
i  : 18 => rounded : 20
i  : 19 => rounded : 20
i  : 20 => rounded : 20
i  : 21 => rounded : 25
i  : 22 => rounded : 25
i  : 23 => rounded : 25
i  : 24 => rounded : 25

答案 2 :(得分:2)

Swift 3

extension Int {
    func nearestFive() -> Int {
        return (self + 4) / 5 * 5
    }
}

使用

let a = 23.nearestFive()
print(a) // 25

答案 3 :(得分:1)

对于整数解,使用由4偏移的mod 5进行舍入:

int i;
int i5;

i = 6;
i5 = i + 4 - ((i+4) % 5);
NSLog(@"i: %i, i5: %i", i, i5);

i = 22;
i5 = i + 4 - ((i+4) % 5);
NSLog(@"i: %i, i5: %i", i, i5);
NSLog output:  
  

我:6,i5:10   我:22,i5:25

答案 4 :(得分:1)

为了舍入到下一个5的倍数,例如,可以使用以下内容:

(int) (5.0 * ceil((number/5.0)))

答案 5 :(得分:1)

你可能不需要这个问题的另一个答案,但我个人认为这更整洁:

int ans = ceil(input / 5.0) * 5.0;

答案 6 :(得分:0)

由于你只需要求整数,num+5-(num%5)就足够了。

旧答案

我对Objective-c了解不多,但这不足够。

r = num%5
r > 2 ? num+5-r : n-r