3

在 iPhone 上:

使用美国语言环境,货币如下所示:$1,234.56
使用英国语言​​环境,货币如下所示:1,234.56 英镑
使用德语(德国)语言环境,货币如下所示:1.234,56 €

最后是日本货币:¥1,234

日本货币没有小数点,这对我的自定义键盘有很大影响。我正在尝试在 Cocoa-touch 框架中找到一种方法,该方法将告诉我特定货币有多少个小数位 - 我的硬编码值 2 对我不公平:(

任何人都可以帮忙吗?

4

4 回答 4

2

我已经很久没有在 Cocoa 中编程了,但是从 NSNumberFormatter 的文档中,有一个名为“currencyDecimalSeparator”的函数——它至少可以告诉你一种货币是否有一个,这可能是一个开始?

于 2009-07-14T18:02:50.677 回答
2

您应该能够使用 CFNumberFormatter 对象来获取您需要的信息。具体来说,您可以使用 CFNumberFormatterGetDecimalInfoForCurrencyCode:

CFStringRef localeIdent = CFSTR("JPY");

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

我希望这会有所帮助。

于 2009-07-15T07:37:44.403 回答
0

金融公司维护此类信息的数据库。您也许可以购买数据或从在线资源导入数据。

另请注意:某些货币需要三位或四位小数。有关示例,请参见http://www.londonfx.co.uk/ccylist.html

于 2009-07-12T19:49:49.873 回答
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]);
于 2011-06-01T20:55:32.820 回答