如何限制iOS中的浮点值

时间:2013-01-17 09:54:46

标签: ios cocoa-touch mpmediaitem

现在我想在iOS中获得歌曲的长度。

- (NSString *)returnofTotalLength
{
    float duration = [[self.player.nowPlayingItem valueForProperty:MPMediaItemPropertyPlaybackDuration] floatValue]/60.0f;
    NSString *length = [NSString stringWithFormat:@"%.2f",duration];;
    NSString *totalLength = [length stringByReplacingOccurrencesOfString:@"." withString:@":"];

    return totalLength;
}

以上代码是显示为5:90的歌曲的总长度。 您知道5:90不可能是真的,因为60秒是1分钟。

应该是6:30

所以我想限制1 minute (60 seconds).

的值

我该怎么办请帮助我?

感谢。

4 个答案:

答案 0 :(得分:1)

这是简单的数学运算。伪代码:

minutes = (int)(seconds / 60);
rest    = seconds % 60;
result  = minutes:rest

Objc:

int seconds   = 150;
int minutes   = (int)(seconds / 60);
int rest      = seconds % 60;
return [NSString stringWithFormat:@"%i:%i", minutes, rest];

答案 1 :(得分:1)

执行以下操作:

min=(int)duration/60;
sec=duration%60;

而不是追加分钟和第二

答案 2 :(得分:1)

如果您的时间过了几个小时,那么您可以选择:

NSInteger seconds = duration % 60;
NSInteger minutes = (duration / 60) % 60;
NSInteger hours = duration / (60 * 60);
NSString *result = nil;

result = [NSString stringWithFormat:@"%02ld:%02ld:%02ld", hours, minutes, seconds];

答案 3 :(得分:0)

我刚回答了自己的问题。 谢谢你的其他答案。 :)

NSTimeInterval currentProgress = [[self.player.nowPlayingItem valueForProperty:MPMediaItemPropertyPlaybackDuration] floatValue];

    float min = floor(currentProgress/60);
    float sec = round(currentProgress - min * 60);

    NSString *time = [NSString stringWithFormat:@"%02d:%02d", (int)min, (int)sec];
    return time;

这将以完整格式返回NSString