不同地区的NSNumberFormatter

时间:2014-09-15 07:14:51

标签: ios objective-c iphone

我将收到美国5.00美元,日本5.00欧元,欧洲5.00欧元等。但我不希望如此。 我想在每个地方都得到同样的东西:美国5.00美元,日本5.00美元,欧洲5.00美元。 这是我尝试过的:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSNumber *tmp = (NSNumber *)[NSString notNullString:[details objectForKey:@"askingPricePerCarat"]];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:[tmp doubleValue]]];
askingPricePerCarat = numberAsString;

1 个答案:

答案 0 :(得分:1)

最后我得到了这个问题的答案,是基于设备的区域格式设置,而不是语言。如果该地区设置为美国,则无论您使用哪种语言

,都会获得en_US
 NSNumberFormatter * fmt;
 NSNumber          * n;

 fmt = [ [ NSNumberFormatter alloc ] init ];
 n   = [ NSNumber numberWithFloat: 10 ];

 [ fmt setFormatterBehavior: NSNumberFormatterBehavior10_4 ];
 [ fmt setCurrencySymbol: @"$" ];
 [ fmt setNumberStyle: NSNumberFormatterCurrencyStyle ];

 // NSLog( @"%@", [ fmt stringFromNumber: n ];

[ fmt release ];

使用

Currency.text = [ fmt stringFromNumber: n ];