Ответ 1
Вы можете указать, что хотите, используя строку формата:
[NSString stringWithFormat:@" %.0f : %.0f", (audioPlayer.currentTime),
(audioPlayer.duration)];
Как удалить все символы после десятичной точки.
Вместо 7.3456 мне было бы просто 7.
Это то, что я делаю, чтобы довести число до десятичных знаков.
[NSString stringWithFormat:@" %f : %f",(audioPlayer.currentTime),(audioPlayer.duration) ];
Большое спасибо, -кода
Вы можете указать, что хотите, используя строку формата:
[NSString stringWithFormat:@" %.0f : %.0f", (audioPlayer.currentTime),
(audioPlayer.duration)];
floorf()
- это функция, которую вы ищете.
Если вы хотите использовать это для отображения, используйте NSNumberFormatter
:
double sevenpointthreefourfivesix = 7.3456;
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:0];
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithDouble:sevenpointthreefourfivesix]]);
2011-12-20 20: 19: 48.813 NoDecimal [55110: 903] 7
Если вы хотите значение без дробной части, используйте round()
. Если вы хотите, чтобы значение самого близкого целого не превышало исходное значение, используйте floor()
.
Передача в int:
[NSString stringWithFormat:@" %i : %i",(int)(audioPlayer.currentTime),(int)(audioPlayer.duration) ];
Кастинг, подобный этому, всегда округляется (например: просто удаляет все после десятичной точки). Это то, о чем вы просили.
В случае округления до всего большого числа NEAREST, которое вы хотите добавить 0.5 к числу
[NSString stringWithFormat:@" %i : %i",(int)(audioPlayer.currentTime+0.5f),(int)(audioPlayer.duration+0.5f) ];
Это будет округлено до ближайшего целого числа. например: 1.2 становится 1.7, а литье в int составляет 1. 3.6 становится 4.1, а литье составляет 4.:)
после
[NSString stringWithFormat:@" %.00f : %.00f",(audioPlayer.currentTime),(audioPlayer.duration) ];
При форматировании float вы можете указать точность по числу до f
Почему бы просто не придать audioPlayer.currentTime
целому числу, прежде чем использовать stringWithFormat
?
[NSString stringWithFormat:@"%d", (int)(audioPlayer.currentTime)];
Все, что вам нужно сделать, это ввести тип double в int, например: int currentTime_int = (int)audioPlayer.currentTime;
.
Вы можете использовать этот же подход для другой переменной.
Многие из более коротких ответов здесь будут работать правильно. Но если вы хотите, чтобы ваш код был действительно понятным и читаемым, вы можете явно указать желаемое преобразование из float в int, например:
int tmpInt = floorf(myFloat); // or roundf(), etc.
а затем отдельно указывая, как вы хотите, чтобы целое число было сформировано, например
... stringWithFormat:@"%d", tmpInt ... // or @"%+03d", etc.
вместо того, чтобы предположить, что встроенный листинг показывает, что вы хотите.
Вы также можете использовать
double newDvalue = floor (dValue);
он удалит все десятичные точки
использование%.0f для строкового формата будет хорошим и