NSNumberFormatter提供错误的货币

时间:2013-08-21 11:53:21

标签: currency nsnumberformatter

我有UILabel我想要显示$也工作正常但问题是它在模拟器上工作正确但当我在设备上测试此代码而不是$它显示Rs(Rupess)任何想法如何解决这个问题。

  NSNumber *number=[[NSNumber alloc]initWithInt:1000];


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

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

   NSLog(@"%@",text);

4 个答案:

答案 0 :(得分:1)

因为默认情况下格式化程序将使用在其运行的设备上指定的语言环境。如果您想强制使用特定显示,则需要使用setLocale:并提供相应的NSLocale实例。

答案 1 :(得分:1)

没有问题。

  1. 当您使用localizedStringFromNumberNSNumberFormatterCurrencyStyle格式化数字时,它会根据您所在的地区为您提供数字格式。
  2. 如果你去你的模拟器设置 - 一般 - 国际 - 区域格式。它必须是美国。因此,当你在模拟器上运行它时会显示$。
  3. 如果您在设备中检查相同的内容。它将区域格式显示为印度。因此,它显示了卢比。符号
  4. 如果您想查看$ sign,请继续更改设备中的设置。

答案 2 :(得分:1)

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

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

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

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

NSString *text = @"₹1,000.00";

答案 3 :(得分:0)

您遇到此问题,因为在设备设置中 - > general-> international-> reion format - >是印度

只需将其更改为您选择的国家/地区,如果您需要$符号,然后选择美国