Swift: MaximumFractionDigits не работает должным образом при изменении валюты - PullRequest
0 голосов
/ 20 февраля 2020

Я использую NumberFormatter Swift с валютой numberStyle. Я установил следующие свойства:

let value: Double = 345.23
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.minimumFractionDigits = 0
formatter.maximumFractionDigits = 0
formatter.locale = Locale(identifier: "en_US")
formatter.currencyCode = "USD"
print(formatter.string(from: NSNumber(value: value))) //Will print $345 as expected

Если я поменяю валюту и напечатаю снова, я получу два десятичных знака. Почему?

formatter.currencyCode = "EUR"
print(formatter.string(from: NSNumber(value: value))) //Will print €345.23 with two decimals

Это должно произойти или это ошибка? Если я изменю локаль на что-то другое, например, «fr_FR», а затем снова вернусь к «en_US», он напечатает с 0 десятичными знаками. Пожалуйста, смотрите прикрепленный результат из XCTestCase. Только после изменения локали валюта будет иметь ожидаемое количество десятичных знаков.

CurrencyNumberFormatter test

ОБНОВЛЕНИЕ: работает для iOS 13.3, но не для iOS 12,0 и 11,0,1

...