Вопрос

Я не понимаю, как работает 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%

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top