四舍五入到最接近的五

时间:2013-07-11 17:37:55

标签: objective-c floating-point integer rounding

所以我正在制作一个自定义滑块,我很接近这个,但似乎无法弄清楚如何让它绕到最近的5.有人可以帮我解决这个问题吗? / p>

int distance = progress;
roundedValue = roundf(distance / 5.0f) * 5.0f;
int distanceInt = (int) roundedValue;
return [NSString stringWithFormat:@"%i", distanceInt];

提前致谢!

2 个答案:

答案 0 :(得分:1)

我尝试过这种方式,只不过是你,它给了我你想要的东西。

-(NSString *)test:(NSInteger)progress{
    NSInteger distance = progress;
    float roundedValue = roundf(distance / 5.0f) * 5.0f;
    int distanceInt = (int) roundedValue;
    return [NSString stringWithFormat:@"%i", distanceInt];

}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{

    for (NSInteger i=0; i<100; i+=4) {
        NSLog(@"%ld -> %@",i, [self test:i]);
    }

}

输出:

0 -> 0
4 -> 5
8 -> 10
12 -> 10
16 -> 15
20 -> 20
24 -> 25
28 -> 30
32 -> 30
36 -> 35
40 -> 40
44 -> 45
48 -> 50
etc

答案 1 :(得分:0)

现在的老问题,传递过来,CodaFi的评论响了。对于任何其他路人,请考虑:

int distanceInt = (distance / 5) * 5; // largest multiple of 5 <= distance
if ( (distance - distanceInt) >= 3 )
   distanceInt += 1; // if remainder >= 3 round up

不需要浮动点。