2

我面临一个奇怪的问题。我的应用程序依赖于双重转换:

货币字符串 -> 数字 -> 货币字符串

基本上,单次转换都是通过iOS自带的本地化功能来实现的。我最近发现当用户使用瑞士法郎作为货币时,该应用程序无法正常工作。显然,此语言环境的默认设置是将所有货币值四舍五入到最接近的 5 美分。(例如,1.28 瑞士法郎将变为 1.30 瑞士法郎,1.21 瑞士法郎将变为 1.20 瑞士法郎)。

出于多种原因,我解决格式约定比解决该唯一语言环境的错误更容易。

您是否知道强制转换为每个语言环境使用更详细的舍入方法(例如 0.01 而不是 0.05)的方法?

谢谢!

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 回答