0

所以我正在研究一个自定义滑块,我非常接近得到这个,但似乎无法弄清楚如何让它四舍五入到最接近的 5。有人可以帮我解决这个问题吗?

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

提前致谢!

4

2 回答 2

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
于 2013-07-11T17:56:16.463 回答
0

到现在为止的老问题,顺便问一下,CodaFi 的说法是正确的。对于任何其他路人,请考虑:

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

不需要浮点数。

于 2013-11-07T13:34:30.437 回答