UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

SOLVED: Day #2 - Side comment - Don't use Double for currency

Forums > 100 Days of SwiftUI

Went through 100 Days of SwiftUI a couple of years ago. With the update happening for newest version, I figured it was worth a second go round.

Paul said something I had never thought of before - Don't use Doubles for currency. It makes perfect sense because of the rounding errors in simple Doubles.

So in Xcode 13.1, Swift 5.5... What do we use for currency?

3      

Use Decimal instead.

Even better is to use a data structure that also encompasses a particular currency along with a Decimal amount.

I highly recommend Flight School's book Guide to Swift Numbers, which has an entire chapter on this topic. They have also published a Money package that incorporates all of their advice from that book.

Or if that's too much for your needs, they suggest a simple struct like this:

struct Money {
   enum Currency: String {
      case USD, EUR, GBP, CNY // supported currencies here
   }

   var amount: Decimal
   var currency: Currency
}

3      

BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.

Get it on Hacking with Swift+

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.