2011-06-11 91 views
2

我正面臨一個奇怪的問題。內置在IOS的定位功能>貨幣字符串更改貨幣格式的默認區域設置行爲

基本上,單轉換是通過實現 -

貨幣字符串 - >數:我的應用程序依賴於一個雙轉換。我最近發現,當用戶使用CHF作爲貨幣時,該應用程序無法正常工作。顯然,此區域設置的默認值是將所有貨幣值舍入到最接近的5美分。 (例如1.28瑞士法郎將變爲1.30瑞士法郎,1.21瑞士法郎變爲1.20瑞士法郎)。

由於一堆原因,我更容易解決格式化約定,而不是解決僅有語言環境的問題。

你知道一種方法來強制轉換爲每個語言環境使用更詳細的舍入方法(例如0.01而不是0.05)嗎?

謝謝!

+0

由於沒有答案,我必須接受我的... – marzapower 2011-06-14 17:30:46

回答

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]]; 
+0

正是我一直在尋找。謝謝!已經注意到,如果您在設置舍入增量後設置貨幣代碼,則設置的舍入增量將根據設定的貨幣進行重置。 – 2011-06-30 07:56:43