2

私は奇妙な問題に直面しています。私のアプリは二重変換に依存しています:

通貨文字列 -> 数値 -> 通貨文字列

基本的に、単一の変換は、iOS の組み込みのローカライズ機能によって実現されます。ユーザーが CHF を通貨として使用すると、アプリが正しく動作しないことが最近わかりました。どうやら、このロケールのデフォルトでは、すべての通貨の値が最も近い 5 セントに丸められます。(例: CHF 1.28 は CHF 1.30 になり、1.21 CHF は CHF 1.20 になります)。

さまざまな理由から、そのロケールのみのバグを解決するよりも、書式設定規則を解決する方が簡単です。

すべてのロケールに対して、より詳細な丸めアプローチ (0.05 ではなく 0.01 など) を使用するように変換を強制する方法を知っていますか?

ありがとうございました!

4

1 に答える 1

2

私は興味深い解決策を見つけました:

currencyFormatter  = [[NSNumberFormatter alloc] init];
[currencyFormatter setGeneratesDecimalNumbers:YES];
[currencyFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
// This will force the rounding behavior:
[currencyFormatter setRoundingIncrement:[NSNumber numberWithFloat:0.01]];
于 2011-06-12T14:04:18.203 に答える