Отформатируйте значение с плавающей запятой, чтобы получить цифры перед десятичной точкой - PullRequest
0 голосов
/ 15 апреля 2011

В моем приложении у меня есть музыкальный проигрыватель, который воспроизводит музыку с продолжительностью 0:30 секунд.

Однако в UILabel я в настоящее время отображаю прогресс, и, как это float, метка14.765.

Буду признателен, если вы подскажете, как я могу заставить ярлык отображать

0: 14 вместо 14.765.

Также ябыл бы признателен, если бы вы могли сказать мне, как я мог бы отображать 0:04, если прогресс составлял 4 секунды.

Ответы [ 3 ]

3 голосов
/ 15 апреля 2011

Это работает правильно:

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];  
2 голосов
/ 15 апреля 2011

Сначала вам нужно преобразовать 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 - это спецификация формата дляцифры, дополненные нулями, целые числа - посмотрите printf в документации для получения полной информации.

1 голос
/ 15 апреля 2011
//%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

...