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

NSNumberFormatter PercentStyle десятичные разряды

Я использую Swift

let myDouble = 8.5 as Double

let percentFormatter            = NSNumberFormatter()
percentFormatter.numberStyle    = NSNumberFormatterStyle.PercentStyle
percentFormatter.multiplier     = 1.00

let myString = percentFormatter.stringFromNumber(myDouble)!

println(myString)

Выходит 8%, а не 8,5%, как я могу получить его на 8.5%? (Но только до двух знаков после запятой)

4b9b3361

Ответ 1

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

percentFormatter.minimumFractionDigits = 1
percentFormatter.maximumFractionDigits = 1

Задайте минимальные и максимальные потребности. Должно быть понятно.

Ответ 2

В Swift 5 у NumberFormatter есть свойство экземпляра под названием minimumFractionDigits. minimumFractionDigits имеет следующую декларацию:

var minimumFractionDigits: Int { get set }

Минимальное количество цифр после десятичного разделителя, разрешенное как ввод и вывод получателем.


NumberFormatter также имеет свойство экземпляра maximumFractionDigits. maximumFractionDigits имеет следующее объявление:

var maximumFractionDigits: Int { get set }

Максимальное количество цифр после десятичного разделителя, разрешенное как ввод и вывод получателем.


В следующем коде Playground показано, как использовать minimumFractionDigits и maximumFractionDigits для установки количества цифр после десятичного разделителя при использовании NumberFormatter:

import Foundation

let percentFormatter = NumberFormatter()
percentFormatter.numberStyle = NumberFormatter.Style.percent
percentFormatter.multiplier = 1
percentFormatter.minimumFractionDigits = 1
percentFormatter.maximumFractionDigits = 2

let myDouble1: Double = 8
let myString1 = percentFormatter.string(for: myDouble1)
print(String(describing: myString1)) // Optional("8.0%")

let myDouble2 = 8.5
let myString2 = percentFormatter.string(for: myDouble2)
print(String(describing: myString2)) // Optional("8.5%")

let myDouble3 = 8.5786
let myString3 = percentFormatter.string(for: myDouble3)
print(String(describing: myString3)) // Optional("8.58%")

Ответ 3

Если вы сомневаетесь, поищите в документации Apple минимальные дробные цифры и максимальные дробные цифры, которые дадут вам следующие строки, которые вы должны добавить перед форматированием вашего числа:

numberFormatter.minimumFractionDigits = 1
numberFormatter.maximumFractionDigits = 2

Также обратите внимание, что ваш вклад должен быть 0,085, чтобы получить 8,5%. Это вызвано свойством множителя, которое для стиля процента установлено на 100 по умолчанию.