如何用货币 NumberFormatter 格式化负数 0
How to format negative 0 with currency NumberFormatter
我注意到我的应用显示“-$0.00”表示值为 -0。数学的简单形式是 let balance: Double = -1 * value
。我希望我的负 0 值只显示为“$0.00”。有没有办法让 NumberFormatter 正确处理这个问题?
let formatter = NumberFormatter()
formatter.numberStyle = .currency
let d: Double = -1 * 0
formatter.string(from: d as NSNumber)! // -[=10=].00
我目前的做法是:
struct Formatter {
static func currency(_ value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
let value = (value == 0) ? 0 : value // Convert -0 to 0
return formatter.string(from: value as NSNumber) ?? ""
}
}
Formatter.currency(-1 * 0) // [=10=].00
如果你正在处理金钱、货币等,使用 Decimal
比 Double
好得多,它也可以解决你的问题,将 d
的声明更改为以下
let d: Decimal = -1 * 0
格式化程序将生成“$0.00”
我注意到我的应用显示“-$0.00”表示值为 -0。数学的简单形式是 let balance: Double = -1 * value
。我希望我的负 0 值只显示为“$0.00”。有没有办法让 NumberFormatter 正确处理这个问题?
let formatter = NumberFormatter()
formatter.numberStyle = .currency
let d: Double = -1 * 0
formatter.string(from: d as NSNumber)! // -[=10=].00
我目前的做法是:
struct Formatter {
static func currency(_ value: Double) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
let value = (value == 0) ? 0 : value // Convert -0 to 0
return formatter.string(from: value as NSNumber) ?? ""
}
}
Formatter.currency(-1 * 0) // [=10=].00
如果你正在处理金钱、货币等,使用 Decimal
比 Double
好得多,它也可以解决你的问题,将 d
的声明更改为以下
let d: Decimal = -1 * 0
格式化程序将生成“$0.00”