String formatting of a Double

65,479

Solution 1

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)

Solution 2

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

let str = String(format: "%.2f", 1.23)
Share:
65,479

Related videos on Youtube

zbrox
Author by

zbrox

Creating some really fun stuff at The Techno Creatives, using mostly Swift, Qt/QML, and TypeScript (Node.js, React). If not doing that probably talking a lot, wondering if I can become a stand up comic, learning Swedish.

Updated on July 09, 2022

Comments

  • zbrox
    zbrox almost 2 years

    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!

    • Rob
      Rob about 9 years
      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).
  • NRitH
    NRitH almost 10 years
    For something as simple as this example, this is a perfectly good solution.
  • Sébastien REMY
    Sébastien REMY almost 8 years
    You may use String not NSString : let str = String(format: "%.2f", 1.23)
  • RonLugge
    RonLugge over 6 years
    FYI, your link appears to have experienced linkrot.
  • uplearned.com
    uplearned.com over 4 years
    Swift5 String(format: "%.2f", arguments: [count])