Недавно я проделал большую работу по форматированию валюты в проекте Swift, вот несколько трюков о том, как форматировать число в Swift:
Форматировать валюту с автоматическим символом валюты
Используя класс NumberFormatter
, мы можем преобразовывать числа в строки и наоборот. Более удобно, мы также можем настроить объект NumberFormatter
для автоматического отображения значений валюты в определенной локали с определенным символом валюты. Например, € в европейских странах, $ в Австралии и далее.
let value = 100.0 let currencyFormatter = NumberFormatter() currencyFormatter.numberStyle = .currency currencyFormatter.locale = Locale(identifier: "en_US") let formattedValue = currencyFormatter.string(from: value as NSNumber) print(formattedValue) // "$100.00"
Формат валюты с максимальным 2 десятичными знаками
Кроме того, мы также можем отформатировать значения валюты в определенном формате, например, преобразовать 100,78 в 100,78 доллара США:
let formatter = NumberFormatter() formatter.numberStyle = .currency formatter.minimumFractionDigits = 0 formatter.maximumFractionDigits = 2 let amount1 = 100.78 let formattedAmount1 = formatter.string(from: NSNumber(value: amount1))! print(formattedAmount1) // Output: "$100.78" // input is whole amount let amount2 = 100 let formattedAmount2 = formatter.string(from: NSNumber(value: amount2))! print(formattedAmount2) // Output: "$100" // input is whole amount let amount3 = 100.1 let formattedAmount3 = formatter.string(from: NSNumber(value: amount3))! print(formattedAmount3) // Output: "$100.1"
minimumFractionDigits
означает, что если исходное значение представляет собой целую сумму или только 1 десятичную часть, оно будет отображать только 0 или 1 десятичный знак, см. примеры выше для amount2
и amount3
.
Форматировать валюту всегда с двумя десятичными знаками
Имейте в виду приведенный выше пример, мы также можем настроить средство форматирования, которое всегда отображает 2 десятичных знака (или любое количество десятичных знаков, которое вы хотите) для значений валюты:
let formatter = NumberFormatter() formatter.numberStyle = .currency formatter.minimumFractionDigits = 2 formatter.maximumFractionDigits = 2 let amount = 123456.789 let formattedAmount = formatter.string(from: NSNumber(value: amount))! print(formattedAmount) // Output: "$123,456.79"
Первоначально опубликовано на https://needone.app 13 февраля 2023 г.
👉 Если вы хотите получать больше подобных историй, подпишитесь на мой канал, чтобы своевременно получать последние обновления