2

これがばかげた質問である場合はお詫びしますが、iPhoneアプリの通貨値をフォーマットしようとしていて、通貨記号を左揃えにするのに苦労していますが、値を右揃えにするのに苦労しています。したがって、「$ 123.45」は次のようにフォーマットされます(たとえば)

$ 123.45
format-widthによって異なります。これは一種の会計フォーマットです(私は思います)。

NSNumberFormatterでさまざまなメソッドを試しましたが、必要なものが得られません。

誰かがこれを行う方法についてアドバイスできますか?

ありがとう

合う

4

2 に答える 2

6

paddingPositionのプロパティを探していますNSNumberFormatterNSNumberFormatterPadAfterPrefixこれを希望のフォーマットに設定する必要があります。

于 2010-02-28T22:22:05.270 に答える
4

これは私にはうまくいきませんでした。これにより、通貨記号と金額の間にスペースを追加することができました。

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)
    }
}

この拡張機能は、MinorUnitsで金額を表すInt上にあります。つまり、米ドルは2桁で表され、日本円は数字なしで表されます。したがって、これはこの拡張機能が返すものです。

let amountInMinorUnits: Int = 1234
amountInMinorUnits.amountStringInCurrency(currencyCode: "USD").str // $ 12.34
amountInMinorUnits.amountStringInCurrency(currencyCode: "JPY").str // JP¥ 1,234

千と小数点の区切り文字は、ユーザーのロケールによって決定されます。

于 2016-12-14T19:00:42.353 に答える