Menentukan jumlah angka desimal suatu mata uang

Di iPhone:

Using the US locale, a currency looks like this: $1,234.56
Using the UK locale, a currency looks like this: £1,234.56
Using the German (Germany) locale, a currency looks like this: 1.234,56 €

and finally, a Japanese currency: ¥1,234

Mata uang Jepang tidak memiliki desimal dan ini berdampak signifikan pada keyboard khusus saya. Saya mencoba menemukan metode dalam kerangka Cocoa-touch yang akan memberi tahu saya berapa banyak tempat desimal yang dimiliki mata uang tertentu - nilai kode keras saya sebesar 2 tidak adil bagi saya :(

Adakah yang bisa membantu?


person rein    schedule 12.07.2009    source sumber


Jawaban (4)


Anda harus dapat menggunakan objek CFNumberFormatter untuk mendapatkan informasi yang Anda perlukan. Khususnya Anda dapat menggunakan CFNumberFormatterGetDecimalInfoForCurrencyCode:

CFStringRef localeIdent = CFSTR("JPY");

int numDecimals;
double rounding;
BOOL result = CFNumberFormatterGetDecimalInfoForCurrencyCode(localeIdent, &numDecimals, &rounding);

Saya harap itu membantu.

person RichardCase    schedule 15.07.2009

Saya sudah lama tidak memprogram Kakao, tetapi dari dokumentasi untuk NSNumberFormatter, ada fungsi yang disebut 'currencyDecimalSeparator' - yang setidaknya dapat memberi tahu Anda jika suatu mata uang memilikinya, yang mungkin bisa menjadi permulaan?

person Steve Mc    schedule 14.07.2009

Perusahaan keuangan memelihara database informasi semacam ini. Anda mungkin dapat membeli data atau mengimpornya dari sumber online.

Perhatikan juga: beberapa mata uang memerlukan tiga atau empat tempat desimal. Lihat http://www.londonfx.co.uk/ccylist.html untuk contohnya .

person Nat    schedule 12.07.2009
comment
NSNumberFormatter sangat brilian untuk ini. Saya tidak mempunyai masalah dengan pemformatan karena semuanya dilakukan untuk saya oleh pemformat. Saya tidak tahu cara menentukan berapa banyak tempat desimal yang perlu saya sediakan. Terima kasih untuk tautannya - hal menarik. - person rein; 12.07.2009
comment
Ngomong-ngomong, idealnya, saya ingin mengikat jumlah desimal dengan apa pun yang dikodekan ke dalam formatter - jika tidak maka akan terjadi kesalahan. - person rein; 12.07.2009

Saya memiliki masalah serupa tetapi jawaban di atas tidak menyelesaikan masalah saya.

Saya akhirnya menggunakan metode maksimumFractionDigits di NSNumberFormatter yang memberi saya 0 untuk lokal Jepang. Pastikan Anda menggunakan NSNumberFormatterCurrencyStyle untuk pemformat, jika tidak, Anda akan melihat tempat desimal di pemformat lain.

    NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
    [currencyFormatter setLocale:[NSLocale currentLocale]];
    [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

    NSLog(@"Number of decimal places %i", [currencyFormatter maximumFractionDigits]);
person Joe Regan    schedule 01.06.2011