在 iPhone 上:
使用美国语言环境,货币如下所示:$1,234.56 使用英国语言环境,货币如下所示:1,234.56 英镑 使用德语(德国)语言环境,货币如下所示:1.234,56 € 最后是日本货币:¥1,234
日本货币没有小数点,这对我的自定义键盘有很大影响。我正在尝试在 Cocoa-touch 框架中找到一种方法,该方法将告诉我特定货币有多少个小数位 - 我的硬编码值 2 对我不公平:(
任何人都可以帮忙吗?
在 iPhone 上:
使用美国语言环境,货币如下所示:$1,234.56 使用英国语言环境,货币如下所示:1,234.56 英镑 使用德语(德国)语言环境,货币如下所示:1.234,56 € 最后是日本货币:¥1,234
日本货币没有小数点,这对我的自定义键盘有很大影响。我正在尝试在 Cocoa-touch 框架中找到一种方法,该方法将告诉我特定货币有多少个小数位 - 我的硬编码值 2 对我不公平:(
任何人都可以帮忙吗?
我已经很久没有在 Cocoa 中编程了,但是从 NSNumberFormatter 的文档中,有一个名为“currencyDecimalSeparator”的函数——它至少可以告诉你一种货币是否有一个,这可能是一个开始?
您应该能够使用 CFNumberFormatter 对象来获取您需要的信息。具体来说,您可以使用 CFNumberFormatterGetDecimalInfoForCurrencyCode:
CFStringRef localeIdent = CFSTR("JPY");
int numDecimals;
double rounding;
BOOL result = CFNumberFormatterGetDecimalInfoForCurrencyCode(localeIdent, &numDecimals, &rounding);
我希望这会有所帮助。
金融公司维护此类信息的数据库。您也许可以购买数据或从在线资源导入数据。
另请注意:某些货币需要三位或四位小数。有关示例,请参见http://www.londonfx.co.uk/ccylist.html。
我有一个类似的问题,但上面的答案并没有真正解决我的问题。
我最终在 NSNumberFormatter 上使用了 maximumFractionDigits 方法,它给了我 0 用于日语语言环境。确保您使用NSNumberFormatterCurrencyStyle作为格式化程序,否则您会在其他格式化程序中看到小数位。
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setLocale:[NSLocale currentLocale]];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSLog(@"Number of decimal places %i", [currencyFormatter maximumFractionDigits]);