47

I can't seem to find a way to format a Double limiting the precision to just a couple of positions after the decimal point when presenting that in a label. Maybe I'm missing something major, but I couldn't find anything in the official documentation.

Thanks in advance for the help!

zbrox
  • 2,683
  • 3
  • 25
  • 29
  • 4
    By the way, I would prefer `NSNumberFormatter`, which honors the device's `locale`. Thus `let formatter = NSNumberFormatter()`, set `minimumFractionDigits` and `maximumFractionDigits` to however many digits you want, and then you can do `let string = formatter.stringFromNumber(3.1415)`. – Rob Mar 31 '15 at 12:42

2 Answers2

47

There's no way to do this using String interpolation.

You can find a good discussion about this on this Apple Dev Forum post.

You can use NSNumberFormatter or NSDateFormatter to format the output.

Alternatively, to use printf-like syntax, you can still use NSString:

var str = NSString(format: "Hello, world %.2f", 42.12312312313)
Cezary Wojcik
  • 21,745
  • 6
  • 36
  • 36
32

Unsure if there is a pure Swift-way but you can always use NSStrings +stringWithFormat::

let str = String(format: "%.2f", 1.23)
Valentin Shamardin
  • 3,569
  • 4
  • 34
  • 51
hallski
  • 123,625
  • 4
  • 33
  • 21