道歉,如果这是一个愚蠢的问题,但我想格式化为我的iPhone应用程序的货币价值,我在努力左对齐的货币符号,但右对齐的值。 因此,“$; 123.45&”被格式化为(比方说)
$; 123.45&取决于格式宽度。 这是一种会计格式(我认为)的。
我试着NSNumberFormatter各种方法,但不能得到我所需要的。
任何人都可以就如何做到这一点?
谢谢
厚
道歉,如果这是一个愚蠢的问题,但我想格式化为我的iPhone应用程序的货币价值,我在努力左对齐的货币符号,但右对齐的值。 因此,“$; 123.45&”被格式化为(比方说)
$; 123.45&取决于格式宽度。 这是一种会计格式(我认为)的。
我试着NSNumberFormatter各种方法,但不能得到我所需要的。
任何人都可以就如何做到这一点?
谢谢
厚
您正在寻找的paddingPosition
财产NSNumberFormatter
。 您需要将其设置为NSNumberFormatterPadAfterPrefix
为所需的格式。
这并没有为我工作。 我能够这样做是为了增加货币符号和金额之间的空间。
雨燕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
千和小数点分隔符确定由用户的语言环境。