2009-07-12 10 views
3

のために小数の数を決定:は、通貨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 

日本の通貨は何の小数と、この影響私のカスタムキーボード大きくはありません。私はココアタッチのフレームワークで、特定の通貨の小数点以下の桁数を教えてくれるメソッドを見つけようとしています.2のハードコーディングされた値が私に正義をしていません:(

誰でも助けてくれますか?

答えて

2

必要な情報を取得するには、CFNumberFormatterオブジェクトを使用できる必要があります。具体的には、CFNumberFormatterGetDecimalInfoForCurrencyCodeを使用することができます。

CFStringRef localeIdent = CFSTR("JPY"); 

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

私は役に立つと思います。

0

金融会社は、この種の情報のデータベースを維持しますが、データを購入したり、オンラインソースからインポートすることができるかもしれない

も注意:一部の通貨は3つか4つの小数点以下を必要とする例についてhttp://www.londonfx.co.uk/ccylist.htmlを参照してください。 。

+0

NSNumberFormatterはこの点で優れています。私はフォーマッタですべてのことができているので、フォーマットに問題はありません。私はプロビジョニングする必要がある小数点以下の桁数を決定する方法を見つけることができません。リンクをありがとう - 興味深いもの。 – rein

+0

ところで、理想的には、私は小数点以下の桁数をフォーマッタにコード化されたものと結びつけたいと思います。 – rein

2

私は年齢のココアでプログラミングされていませんが、NSNumのドキュメントberFormatterには、 'currencyDecimalSeparator'という関数があります。少なくとも、通貨に1つの通貨があるかどうかを知らせるかもしれません。

0

私は同様の問題がありましたが、上記の答えは私の問題を本当に解決しませんでした。

NSNumberFormatterでmaximumFractionDigitsメソッドを使用すると、日本語のロケールが0になりました。フォーマッタにNSNumberFormatterCurrencyStyleを使用してください。そうでない場合は、他のフォーマッタに小数点以下の桁が表示されます。

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

    NSLog(@"Number of decimal places %i", [currencyFormatter maximumFractionDigits]);