所以我正在研究一个自定义滑块,我非常接近得到这个,但似乎无法弄清楚如何让它四舍五入到最接近的 5。有人可以帮我解决这个问题吗?
int distance = progress;
roundedValue = roundf(distance / 5.0f) * 5.0f;
int distanceInt = (int) roundedValue;
return [NSString stringWithFormat:@"%i", distanceInt];
提前致谢!
所以我正在研究一个自定义滑块,我非常接近得到这个,但似乎无法弄清楚如何让它四舍五入到最接近的 5。有人可以帮我解决这个问题吗?
int distance = progress;
roundedValue = roundf(distance / 5.0f) * 5.0f;
int distanceInt = (int) roundedValue;
return [NSString stringWithFormat:@"%i", distanceInt];
提前致谢!
我试过这种方式,无非就是你,它给了我你想要的东西。
-(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
到现在为止的老问题,顺便问一下,CodaFi 的说法是正确的。对于任何其他路人,请考虑:
int distanceInt = (distance / 5) * 5; // largest multiple of 5 <= distance
if ( (distance - distanceInt) >= 3 )
distanceInt += 1; // if remainder >= 3 round up
不需要浮点数。