Номер форматирования в процентах
-
27-09-2019 - |
Вопрос
Я не понимаю, как работает NsnumberformatterPentStyle!
Пример:
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). Что такое NsnumberFormatterPentStyle, делая с 90,5, и почему? И как я могу получить желаемый результат!?
Решение
Предполагается, что число находится в диапазоне 0-1, так как это проценты
Так что 0,905 получит вам 90,5%.
Другие советы
Просто установите множитель в 1
Если ваши номера уже в процентах.
numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMultiplier:@1];
Начнем с основы:
- 1 = 100%
- 1/2 = 0.5 = 50%
«Процент» означает «из 100», так что 12% означает 12/100. Вы не «умножаетесь на 100», чтобы получить процентное значение, вы умножаетесь на 100% (что такое же, как умножение на 1, что такое же, как ничего не делать).
Не каждый использует базу 10 (хотя и большинство «современных» языков), а не каждый использует 100 в качестве знаменателя. См., Например, Permillsymbol (или Kcfnumberformatterpermillsymbol). Там нет формата «Permill», но возможно, что он автоматически используется для локалей, которые не используют проценты.
Смотрите также: за знак Mille (‰) и на десять тысяч знак (‱).
Я не знаю этого языка, но на основании вашего кода образец и вывод, я догадаю, что процентное устройство умножает на 100, а затем указывает%, чтобы 1 становится на 100%. То, что вы хотите использовать .905, который должен стать 90,5%.
Раздел «Процентный стиль» ожидает ряд 0.905
Если вы хотите в конечном итоге 90.5%
. Отказ Это интерпретирует 90.5
как из 1, так что это 9050% от 1.
Ответ Pulkit Goyal является правильным ... Установка множителя на 1 составляет «50» в «50%»
Swift 4/5.
Создавать NSNumber
расширение так же, как это
extension NSNumber {
func getPercentage() -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .percent
formatter.maximumFractionDigits = 0 // You can set what you want
return formatter.string(from: self)!
}
}
Получить процент
let confidence = 0.68300 as NSNumber
print(confidence.getPercentage())
Выход
68%