iPhone: сколько цифр должно быть после точки у числа с плавающей запятой

Я пытаюсь установить количество цифр с плавающей запятой с помощью сегментированного элемента управления.

Итак, я создал сегментированный элемент управления с «0», «1», «2» и «3». Я хочу установить цифры после запятой с переменной (self._segmentedControl.selectedSegmentIndex).

Я знаю, что могу решить, сколько цифр после запятой должно быть так:

sliderValue.text = [NSString stringWithFormat:@"%.3f",slider.value];

Кто-нибудь может мне помочь?


person MaxB    schedule 19.09.2012    source источник
comment
И ваш вопрос, связанный с Xcode: ???   -  person    schedule 19.09.2012
comment
как я могу установить количество цифр с выходом self._segmentedControl.selectedSegmentIndex   -  person MaxB    schedule 19.09.2012
comment
проблема в том, что это не связано с Xcode.   -  person    schedule 19.09.2012
comment
Прочтите спецификацию fprintf, особенно начало раздела Необязательная минимальная ширина поля ...   -  person Hot Licks    schedule 19.09.2012
comment
ах хорошо, извините, я использовал его, потому что я работаю с ним   -  person MaxB    schedule 19.09.2012
comment
@H2CO3 -- У тебя нет коровы. Половина потоков Objective-C здесь неправильно помечены xcode.   -  person Hot Licks    schedule 19.09.2012
comment
@Hot Licks, и это неприемлемо, ИМХО.   -  person    schedule 19.09.2012
comment
@MaxBurkhardt, пожалуйста, прочитайте его вики-тег - там четко указано, что вы не должны использовать этот тег для общих вопросов программирования iOS. Видите ли, меня это очень расстраивает, так как я разрабатываю для iOS без Xcode.   -  person    schedule 19.09.2012
comment
@ H2CO3 - Но нужно только сказать: «Пожалуйста, не используйте тег «xcode», если ваш вопрос не связан со средой разработки Xcode.   -  person Hot Licks    schedule 19.09.2012


Ответы (4)


Вы даже можете сделать это за один шаг:

sliderValue.text = [NSString stringWithFormat:@"%.*f", numberOfDigits, slider.value];
person Martin R    schedule 19.09.2012

Вы можете сделать это в два этапа.

NSString *format = [NSString stringWithFormat:@"%%.%df", numberOfDigits);
sliderValue.text = [NSString stringWithFormat:format, slider.value];
person DrummerB    schedule 19.09.2012
comment
Ой. Мой. Бог. Ты опередил меня на 8 секунд! И мы даже использовали одно и то же имя переменной для строки формата! - person ; 19.09.2012
comment
Downvoter: причина??? Почему кто-то приходит сюда и случайным образом отрицает действительные ответы! Иди нахуй, анонимный убийца! Этот ответ хорош!!! - person ; 19.09.2012

NSString *format = [NSString stringWithFormat:@"%%.%df", numberOfDecimalPlaces];
sliderValue.text = [NSString stringWithFormat:format, slider.value];

Это должно сработать. Остерегайтесь атак на строку формата.

person Community    schedule 19.09.2012
comment
Вау, на этот раз мы почти получили точно такое же решение. :-) - person DrummerB; 19.09.2012
comment
Возможно, кому-то нравится однострочное решение? - person nhahtdh; 19.09.2012
comment
+1 Согласитесь, это не неправильный ответ, хотя такие люди время от времени встречаются. - person nhahtdh; 19.09.2012

Проверьте, работает это или нет. Я тестировал это только с C++, но поскольку документация для Формат строки указывает на спецификацию IEEE printf, я считаю, что это также должно работать для Objective-C.

sliderValue.text = [NSString stringWithFormat: @"%.*f", places, slider.value];
person nhahtdh    schedule 19.09.2012