这个问题与类似,但没有人回答这个问题--。
我使用一个NSNumberFormatter来格式化货币值,只要货币是用户区域设置的货币,它就能很好地工作。但是,我还需要显示可能不是用户区域设置的默认货币的货币值(例如,当当前区域设置为en_US时显示GBP,或者当区域设置为fr_FR时显示日元)。
因此,我想使用当前地区设置的规则来显示这些货币,但是我不知道如何在设置货币代码之后获得货币符号。
例如,下面是如何配置NSNumberFormatter:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.usesGroupingSeparator = YES;
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
所有这些都是正确的。但是,如果我将货币代码设置为英镑,如下所示:
currencyFormatter.currencyCode = @"GBP"如果格式化字符串是正确的,货币代码是正确的,但货币符号和国际货币符号是不正确的,则得到以下信息。
£
GBP
但是,对于我来说,stringFromNumber方法返回格式正确的值,并使用正确的货币符号,但访问currencySymbol属性直接返回不正确的货币符号,这真的很奇怪。
我需要能够访问货币符号,这样我可以使它更小,并移动它的基线,这样货币符号就会变小,并与文本的其余部分相抵消。
有没有人知道我是否做错了什么,或者在设置货币代码后如何获得货币符号?
发布于 2021-05-13 03:22:12
您正在强制currencyCode 'GPD‘,但其他货币风格的属性,如symbol,internationalCurrencySymbol,.他们依赖于Locale。检查一下这个:
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);它将印刷:
£123,456.00
£
GBP
GBP然后,按照您所做的方式,只将货币代码编辑为USD:
US$123,456.00
£
USD
GBPhttps://stackoverflow.com/questions/67512302
复制相似问题