首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNumberFormatter -获取货币代码的货币符号

NSNumberFormatter -获取货币代码的货币符号
EN

Stack Overflow用户
提问于 2021-05-12 23:46:36
回答 1查看 257关注 0票数 0

这个问题与类似,但没有人回答这个问题--。

我使用一个NSNumberFormatter来格式化货币值,只要货币是用户区域设置的货币,它就能很好地工作。但是,我还需要显示可能不是用户区域设置的默认货币的货币值(例如,当当前区域设置为en_US时显示GBP,或者当区域设置为fr_FR时显示日元)。

因此,我想使用当前地区设置的规则来显示这些货币,但是我不知道如何在设置货币代码之后获得货币符号。

例如,下面是如何配置NSNumberFormatter:

代码语言:javascript
复制
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.usesGroupingSeparator = YES;
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];

  • $12.50

  • (lldb) po [currencyFormatter stringFromNumber:NSNumber numberWithDouble:12.50]

  • $

  • (lldb) po currencyFormatter.currencySymbol currencyFormatter.currencySymbol

  • USD

  • (lldb) po currencyFormatter.currencyCode currencyFormatter.currencyCode

  • USD

  • (lldb) po currencyFormatter.internationalCurrencySymbol currencyFormatter.internationalCurrencySymbol

所有这些都是正确的。但是,如果我将货币代码设置为英镑,如下所示:

代码语言:javascript
复制
currencyFormatter.currencyCode = @"GBP"

如果格式化字符串是正确的,货币代码是正确的,但货币符号和国际货币符号是不正确的,则得到以下信息。

  • £12.50

  • (lldb) po [currencyFormatter stringFromNumber:NSNumber numberWithDouble:12.50]

£

  • (lldb) po currencyFormatter.currencySymbol
    • $ -错误,这应该是

  • USD

  • (lldb) po currencyFormatter.currencyCode currencyFormatter.currencyCode

GBP

  • (lldb) po currencyFormatter.internationalCurrencySymbol
    • 美元-错,这应该是

但是,对于我来说,stringFromNumber方法返回格式正确的值,并使用正确的货币符号,但访问currencySymbol属性直接返回不正确的货币符号,这真的很奇怪。

我需要能够访问货币符号,这样我可以使它更小,并移动它的基线,这样货币符号就会变小,并与文本的其余部分相抵消。

有没有人知道我是否做错了什么,或者在设置货币代码后如何获得货币符号?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-13 03:22:12

您正在强制currencyCode 'GPD‘,但其他货币风格的属性,如symbolinternationalCurrencySymbol,.他们依赖于Locale。检查一下这个:

代码语言:javascript
复制
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.usesGroupingSeparator = YES;
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_UK"];

NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithDouble:123456]]);
NSLog(@"%@", formatter.currencySymbol);
NSLog(@"%@", formatter.currencyCode);
NSLog(@"%@", formatter.internationalCurrencySymbol);

它将印刷:

代码语言:javascript
复制
£123,456.00
£
GBP
GBP

然后,按照您所做的方式,只将货币代码编辑为USD

代码语言:javascript
复制
US$123,456.00
£
USD
GBP
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67512302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档