道歉,如果这是一个愚蠢的问题,但我正在尝试格式化我的iPhone应用程序的货币值,并且正在努力左对齐货币符号,但是正确地证明了价值。因此,“$ 123.45”的格式为(例如)
$ 123.45,具体取决于格式宽度。这是一种会计格式(我认为)。
我已经尝试过使用NSNumberFormatter的各种方法,但无法得到我需要的东西。
有人可以建议如何做到这一点吗?
由于
飞图
答案 0 :(得分:4)
您正在寻找paddingPosition
的{{1}}属性。您需要将其设置为NSNumberFormatter
以获得所需的格式。
答案 1 :(得分:1)
这对我不起作用。通过这样做,我能够在货币符号和金额之间添加一个空格。
Swift 3.0
currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "
完整代码:
extension Int {
func amountStringInCurrency(currencyCode: String) -> (str: String, nr: Double) {
let currencyFormatter = NumberFormatter()
currencyFormatter.usesGroupingSeparator = true
currencyFormatter.numberStyle = .currency
currencyFormatter.currencyCode = currencyCode
currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "
let nrOfDigits = currencyFormatter.maximumFractionDigits
let number: Double = Double(self)/pow(10, Double(nrOfDigits))
return (currencyFormatter.string(from: NSNumber(value: number))!, number)
}
}
此扩展名在Int上,表示MinorUnits中的金额。即美元用2位数表示,而日元用数字表示。所以这就是这个扩展将返回的内容:
let amountInMinorUnits: Int = 1234
amountInMinorUnits.amountStringInCurrency(currencyCode: "USD").str // $ 12.34
amountInMinorUnits.amountStringInCurrency(currencyCode: "JPY").str // JP¥ 1,234
千位和小数分隔符由用户区域设置确定。