首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSNumberFormatter给出了错误的货币

NSNumberFormatter给出了错误的货币
EN

Stack Overflow用户
提问于 2013-08-21 19:53:21
回答 4查看 488关注 0票数 0

我有一个UILabel,我想在其中显示$,它工作得很好,但问题是它在模拟器上工作正常,但当我在设备上测试这段代码时,它显示了R (Rupess),任何如何解决这个问题的想法。

代码语言:javascript
运行
复制
  NSNumber *number=[[NSNumber alloc]initWithInt:1000];


   NSString *No = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyStyle];
   NSLog(@"%@", No);

   UILabel * text=[NSString stringWithFormat:@"%@",No];

   NSLog(@"%@",text);
EN

回答 4

Stack Overflow用户

发布于 2013-08-21 19:59:11

因为在默认情况下,格式化程序将使用运行格式化程序的设备上指定的区域设置。如果希望强制显示特定内容,则需要使用setLocale:并提供适当的NSLocale实例。

票数 1
EN

Stack Overflow用户

发布于 2013-08-21 19:59:22

没有问题。

  1. 当您使用localizedStringFromNumberNSNumberFormatterCurrencyStyle格式化数字时,它会根据您所在的地区为您提供数字格式。
  2. 如果您转到您的模拟器设置-常规-国际-区域格式。一定是美国。因此,当你在模拟器上运行它时,它会显示$。
  3. ,如果你在你的设备上检查同样的东西。它将显示区域格式为印度。因此,它显示的是R。
  4. 如果您想看到$符号,只需继续并更改Device中的设置。
票数 1
EN

Stack Overflow用户

发布于 2013-08-21 20:31:35

我怀疑您是否希望将[NSString stringWithFormat:@"%@",No]的结果设置为UILabel实例。

其他答案似乎最有可能,选择正确的设备区域设置,并使用现有代码以本地格式输出值。

但是,如果有人对以任意货币格式输出数字感兴趣:

代码语言:javascript
运行
复制
NSNumber *number = [NSNumber numberWithInt:1000];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setCurrencyCode:@"INR"];

NSString *text = [formatter stringFromNumber:number];

NSLog(@"%@", text);

// Release formatter as required

尽管你为什么要这样做,而不是仅仅使用货币符号和一个基本的字符串,我不确定:p

代码语言:javascript
运行
复制
NSString *text = @"₹1,000.00";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18356697

复制
相关文章

相似问题

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