YogeshChauhan . com

How to implement NSNumberFormatter in Swift for currency?

in Swift on March 5, 2020

To show a number in proper currency format, we are going to use following classes.


An object wrapper for primitive scalar numeric values.

NSNumber is a subclass of NSValue that offers a value as any C scalar (numeric) type. It defines a set of methods specifically for setting and accessing the value as a signed or unsigned char, short int, int, long int, long long int, float, or double or as a BOOL. It also defines a compare(_:) method to determine the ordering of two NSNumber objects.


class NSNumber : NSValue

Read more on Apple's Official Guide: https://developer.apple.com/documentation/foundation/nsnumber


A formatter that converts between numeric values and their textual representations.


class NumberFormatter : Formatter

Instances of NumberFormatter format the textual representation of cells that contain NSNumber objects and convert textual representations of numeric values into NSNumber objects. The representation encompasses integers, floats, and doubles; floats and doubles can be formatted to a specified decimal position. NumberFormatter objects can also impose ranges on the numeric values cells can accept.

Read more on Apple's Official Guide: https://developer.apple.com/documentation/foundation/numberformatter

How to use those claases to print currency symbol?

Let's look at this example:

let price = 12.34 as NSNumber
let formatter = NumberFormatter()

formatter.numberStyle = .currency
print(formatter.string(from: price)!)

The primary purpose of the NSNumber class is to allow the storage of primitive numerical data in the form of an object. The NSNumber class is able to store signed and unsigned char, short, integer, int, long and long long data types and also float, double and Bool values.

Also, When we display a number in Swift in Float, Double, or Int, it will display the numbers without grouping separators. So, by default 9,992,098.0 will be displayed as 9992098.0. S, we need to use the NumberFormatter (NSNumberFormatter in older Swift) class to convert your number into a formatted String for a text field.

To display currency, we will need to show the currency symbol ($, €, ¥, £) for the current locale and for that we use NSNumberFormatter, which is now NumberFormatter class.

Finally, formatter.numberStyle = .currency converts the styles into currency style. We can use .numberStyle to show decimal, scientific and many more styles as well but all we need is currency style right now.

Now, the example above is going to display the default currency format (USD).



If we want to display currency in whole number, we can use this:

formatter.locale = Locale(identifier: "es_CL")
print(formatter.string(from: price)!)



We can also define other currency symbol. For example, let's display Indian Rupee symbol.

formatter.locale = Locale(identifier: "brx_IN")
print(formatter.string(from: price)!)


₹ 12.34

We can actually display the whole currency in Indian language:

formatter.locale = Locale(identifier: "bn_IN")
print(formatter.string(from: price)!)



Here is the full list of iOS Locale Identifiers on Github: https://gist.github.com/st3fan/18f95c9c51de4e8df0302aac8eaa58ae


Most Read

#1 How to check if radio button is checked or not using JavaScript? #2 Solution to “TypeError: ‘x’ is not iterable” in Angular 9 #3 How to add Read More Read Less Button using JavaScript? #4 How to uninstall Cocoapods from the Mac OS? #5 How to Use SQL MAX() Function with Dates? #6 PHP Login System using PDO Part 1: Create User Registration Page

Recently Posted

Jun 16 What are Stored Procedures for SQL Server? Jun 16 What are Class Constants in PHP? Jun 15 A short basic guide on states in React Jun 15 How to define constants in PHP? Jun 15 How to define visibility for a property in PHP? Jun 15 How to use @if and @else in SCSS?

You might also like these

CurrencyPipe in Angular 9 with ExamplesAngularHow to display and animate image on scroll using JavaScript?JavaScriptAvoid using new Array() in JavaScriptJavaScriptHow to apply style to a specific child element using CSS?CSSHow to create a cross-browser smooth scrolling with jQuery?jQueryCONCAT and CONCAT_WS Functions in PostgresPostgres