#

#15: Rounding Floating Point Numbers to Specific Decimal Places

As described in this post, since Swift 3.0 is now possible to round floating point numbers through new methods added to the *Double* and *Float* types.

But what about rounding a number to a specific number of decimal positions?

### The Manual Way

If you don’t want to depend on external frameworks, we can just do it manually, extending for example the *Double* type:

```
extension Double {
func roundTo(places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
```

And then simply call the method specifying the desired precision:

```
let x = Double(0.123456789).roundTo(places: 4)
```

### The Foundation Way

If you just need this conversion to print the number or use it inside a String, and that’s the case most of the times, a straightforward alternative is to just use the additional String initializer provided by *Foundation* that allows to specify a format:

```
import Foundation
String(format: "%.4f", 0.123456789)
```