Bartłomiej Semańczyk
Bartłomiej Semańczyk

Reputation: 61774

How to convert Decimal to String with two digits after separator?

This is what I do now:

extension Decimal {
    var formattedAmount: String {
        let formatter = NumberFormatter()
        formatter.generatesDecimalNumbers = true
        formatter.minimumFractionDigits = 2
        formatter.maximumFractionDigits = 2
        return formatter.string(from: self) //mismatch type
    }
}

but I cannot create NSNumber from Decimal.

Upvotes: 3

Views: 5586

Answers (2)

Rashwan L
Rashwan L

Reputation: 38833

This:

formatter.string(from: ...) // requires a NSNumber

You can either do this:

formatter.string(for: self) // which takes Any as argument

Or:

string(from: self as NSDecimalNumber) // cast self to NSDecimalNumber

Upvotes: 2

Ladislav
Ladislav

Reputation: 7283

This should work

extension Decimal {
    var formattedAmount: String? {
        let formatter = NumberFormatter()
        formatter.generatesDecimalNumbers = true
        formatter.minimumFractionDigits = 2
        formatter.maximumFractionDigits = 2
        return formatter.string(from: self as NSDecimalNumber)
    }
}

Upvotes: 8

Related Questions