问题
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
.
回答1:
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)
}
}
回答2:
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
来源:https://stackoverflow.com/questions/46933209/how-to-convert-decimal-to-string-with-two-digits-after-separator