Menggunakan NSNumberFormatter untuk mengisi spasi antara simbol mata uang dan nilainya

Apologies if this is a dumb question but I'm trying to format a currency value for my iphone app and am struggling to left-justify the currency symbol, but right-justify the value. So, "$123.45" is formatted as (say)

$   123.45
depending on format-width. This is a kind of accounting format (I think).

Saya sudah mencoba berbagai metode dengan NSNumberFormatter tetapi tidak mendapatkan apa yang saya butuhkan.

Adakah yang bisa memberi saran tentang cara melakukan ini?

Terima kasih

Cocok dengan


person Fittoburst    schedule 28.02.2010    source sumber


Jawaban (2)


Anda sedang mencari properti paddingPosition dari NSNumberFormatter. Anda perlu menyetelnya ke NSNumberFormatterPadAfterPrefix untuk format yang diinginkan.

person Can Berk Güder    schedule 28.02.2010
comment
Cemerlang. Berhasil. Terima kasih - person Fittoburst; 02.03.2010
comment
Penting untuk dicatat bahwa ini hanya berfungsi ketika formatWidth disetel, sesuai pertanyaan. - person philippe; 24.05.2017

Ini tidak berhasil untuk saya. Saya dapat menambahkan spasi antara simbol mata uang dan jumlah dengan melakukan ini.

Swift 3.0

currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "

Kode lengkap:

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

Ekstensi ini ada pada Int yang menyatakan jumlah dalam MinorUnits. Yaitu. USD dinyatakan dengan 2 digit, sedangkan yen Jepang dinyatakan tanpa angka. Jadi inilah yang akan dikembalikan oleh ekstensi ini:

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

Pemisah ribuan desimal ditentukan oleh lokal pengguna.

person guido    schedule 14.12.2016