DEV Community

Cover image for Format currency in Swift
Ben
Ben

Posted on • Originally published at needone.app on

5

Format currency in Swift

Recently I have done quite an amount of work on formatting currency in Swift project, here are some tricks on how to format number in Swift:

Format currency with auto currency symbol

By using the NumberFormatter class, we can convert numbers into string(s), and vice versa. More conveniently, we can also configure a NumberFormatter object to display currency values in a specific locale with a specific currency symbol automatically. For example, € in European countries, $ in Australia and son on.

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"

Enter fullscreen mode Exit fullscreen mode

Format currency with max 2 decimals

Moreover, we can also format the currency values in specific format, such as converting 100.78 to $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"

Enter fullscreen mode Exit fullscreen mode

minimumFractionDigits meaning if the original value is whole amount or just 1 decimal part, it will only show 0 or 1 decimals, see above examples on amount2 and amount3.

Format currency with always 2 decimals

Bear the above example in mind, we can also set up the formatter which always displaying 2 decimals (or any number of decimals you want) for currency values:

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"

Enter fullscreen mode Exit fullscreen mode

For more details: https://needone.app/format-currency-in-swift/

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more