Подтвердить что ты не робот

Удаление символов после десятичной точки для двойной

Как удалить все символы после десятичной точки.

Вместо 7.3456 мне было бы просто 7.

Это то, что я делаю, чтобы довести число до десятичных знаков.

[NSString stringWithFormat:@" %f : %f",(audioPlayer.currentTime),(audioPlayer.duration) ];

Большое спасибо, -кода

4b9b3361

Ответ 1

Вы можете указать, что хотите, используя строку формата:

[NSString stringWithFormat:@" %.0f : %.0f", (audioPlayer.currentTime),
                                            (audioPlayer.duration)];

Ответ 2

floorf() - это функция, которую вы ищете.

Ответ 3

Если вы хотите использовать это для отображения, используйте 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().

Ответ 4

Передача в 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.:)

Ответ 5

после

[NSString stringWithFormat:@" %.00f : %.00f",(audioPlayer.currentTime),(audioPlayer.duration) ];

При форматировании float вы можете указать точность по числу до f

Ответ 6

Почему бы просто не придать audioPlayer.currentTime целому числу, прежде чем использовать stringWithFormat?

[NSString stringWithFormat:@"%d", (int)(audioPlayer.currentTime)];

Ответ 7

Все, что вам нужно сделать, это ввести тип double в int, например: int currentTime_int = (int)audioPlayer.currentTime;.

Вы можете использовать этот же подход для другой переменной.

Ответ 8

Многие из более коротких ответов здесь будут работать правильно. Но если вы хотите, чтобы ваш код был действительно понятным и читаемым, вы можете явно указать желаемое преобразование из float в int, например:

int tmpInt = floorf(myFloat);  // or roundf(), etc.

а затем отдельно указывая, как вы хотите, чтобы целое число было сформировано, например

... stringWithFormat:@"%d", tmpInt ...  // or @"%+03d", etc.

вместо того, чтобы предположить, что встроенный листинг показывает, что вы хотите.

Ответ 9

Вы также можете использовать

double newDvalue = floor (dValue);

он удалит все десятичные точки

использование%.0f для строкового формата будет хорошим и