{

# Round double value with n number decimal places in the swift example

It is a common requirement to display prices and orders with a limit of 3 decimal places.

This tutorial explains how to round double values to limit decimal places.

There are multiple ways we can limit decimal places.

For example, If the input is 123.456789, the output is 123.456.

## How to round double values to limit decimal or fraction parts in Swift?

Following are ways to round double fractional parts

• NumberFormatter class

NumberFormatter class provides to format and rounding the numbers.

It is mainly used to add grouping and limit and rounding fractional parts of numeric types Configure NumberFormatter class to the below values

• `numberStyle` to NumberFormatter.Style.decimal
• `roundingMode` to `NumberFormatter.RoundingMode.floor` that converts the number to less than give decimal parts
• `maximumFractionDigits` to integer to limit decimal parts.

Finally, call the string method with from values and returns the rounded numbers in the Optional object.

Here is an example code

``````import Foundation

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
numberFormatter.roundingMode = NumberFormatter.RoundingMode.floor
numberFormatter.maximumFractionDigits = 2

let result1 = numberFormatter.string(from: 123456.17213)
let result2 = numberFormatter.string(from: 090.17872134)
print(String(describing: result1))
print(String(describing: result2))
``````

Output:

``````Optional("123,456.17")
Optional("90.17")
``````

### using String Format

Another way using the String Format method.

It is a simple way of using Foundation String where String is a wrapper class for NSString. `%.3f` limit the value to 3 digits. Here is an example code

``````
import Foundation

let value: Double = 3123.11231231231231
print(String(format:"%.3f", value))
``````

Output:

``````3123.112
``````

## NSDecimalNumber rounding class

`NSDecimalNumber` has a rounding method that returns rounding of a decimal part of a number

Here is a syntax

``````func rounding(accordingToBehavior behavior: NSDecimalNumberBehaviors?) -> NSDecimalNumber
``````

`NSDecimalNumberBehaviors` is a parameter to the `rounding` method. Which can be created using NSDecimalNumberHandler with scale parameter.

Here is an example

``````import Foundation

let limitFranction: Int16 = 2

let handler = NSDecimalNumberHandler(roundingMode: .plain, scale: limitFranction, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: true)

let result = NSDecimalNumber(value: 3123.11231231231231).rounding(accordingToBehavior: handler)

print(result)
``````

Output:

``````3123.11
``````
THE BEST NEWSLETTER ANYWHERE
Join 6,000 subscribers and get a daily digest of full stack tutorials delivered to your inbox directly.No spam ever. Unsubscribe any time.

Similar Posts
Subscribe
You'll get a notification every time a post gets published here.

Related posts