在我的应用程序中,我有一个音乐播放器,播放长度为0:30秒的音乐。
然而,在UILabel中我正在显示进度,因为它是一个浮点数,标签显示为14.765。
如果您能告诉我如何显示标签
,我将不胜感激0:14而不是14.765。
另外,如果您能告诉我如果进度为4秒,我会如何显示0:04,我将不胜感激。
答案 0 :(得分:3)
这很正常:
float time = 14.765;
int mins = time/60;
int secs = time-(mins*60);
NSString * display = [NSString stringWithFormat:@"%d:%02d",mins,secs];
结果:
14.765 => 0:14
30.000 => 0:30
59.765 => 0:59
105.999 => 1:45
修改强>
此外还有'一线班机':
float time = 14.765;
NSString * display = [NSString stringWithFormat:@"%d:%02d",(int)time/60,(int)time%60];
答案 1 :(得分:2)
您首先需要将float
转换为整数,并根据需要进行四舍五入。然后,您可以使用整数除法/
和余数,%
运算来提取分钟和秒并生成字符串:
float elapsedTime = 14.765;
int wholeSeconds = round(elapsedTime); // or ceil (round up) or floor (round down/truncate)
NSString *time = [NSString stringWithFormat:@"%02d:%02d", wholeSeconds/60, wholeSeconds%60];
%02d
是2位数,零填充,整数的格式规范 - 在文档中查找printf
以获取完整详细信息。
答案 2 :(得分:1)
//%60 remove the minutes and int removes the floatingpoints
int seconds = (int)(14.765)%60;
// calc minutes
int minutes = (int)(14.765/60);
// validate if seconds have 2 digits
NSString time = [NSString stringWithFormat:@"%i:%02i",minutes,seconds];
应该有用。无法测试我目前在Win上