Форматирование числа в процентах

Я не понимаю, как работает NSNumberFormatterPercentStyle!

Пример:

NSNumber *number = [NSNumber numberWithFloat:90.5];
NSNumberFormatter *percentageFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[percentageFormatter setNumberStyle:NSNumberFormatterPercentStyle];

NSString *strNumber = [percentageFormatter stringFromNumber:numbericString];
NSLog (strNumber);  // Output: 9,050%

Я просто хочу показать «90,5%» (соблюдая NSLocal). Что NSNumberFormatterPercentStyle делает с 90.5 и почему? И как я могу получить желаемый результат!?

21
задан Imanou Petit 7 November 2018 в 11:01
поделиться

4 ответа

Предполагается, что число находится в диапазоне 0-1, так как это процент

, поэтому 0.905 даст вам 90.5%.

27
ответ дан 29 November 2019 в 06:10
поделиться

Начнем с основ:

  • 1 = 100%
  • 1/2 = 0,5 = 50%

«Процент» означает «из 100», поэтому 12% означает 12/100. Вы не «умножаете на 100», чтобы получить процентное значение, вы умножаете на 100% (что то же самое, что умножение на 1, то же самое, что ничего не делать).

Не все используют основание 10 (хотя большинство «современных» языков используют), и не все используют 100 в качестве знаменателя. См., Например, perMillSymbol (или kCFNumberFormatterPerMillSymbol). Не существует формата «permill», но возможно, что он автоматически используется для локалей, в которых не используются проценты.

См. Также: НА ЗНАК НА МИЛЛЬ (‰) и НА ДЕСЯТЬ ТЫСЯЧ ЗНАК (‱).

4
ответ дан 29 November 2019 в 06:10
поделиться

Форматировщик "процентного стиля" ожидает число 0,905 , если вы хотите получить 90,5% . Он интерпретирует 90,5 как из 1, поэтому это 9050% от 1.

2
ответ дан 29 November 2019 в 06:10
поделиться

Я не знаю этого языка, но, основываясь на примере вашего кода и вывода, я бы предположил, что форматер процентов умножает на 100, а затем ставит знак %, так что 1 становится 100%. Вы хотите использовать .905, что должно превратиться в 90,5%.

3
ответ дан 29 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: