禁用NSNumberFormatter的语言环境

Fon*_*nix 7 objective-c ios

使用即时通讯的NSNumberFormatter使用格式为"##,## 0.00",但我的区域设置为南非它采用货币格式,如"## ## 0.0"的区域,在那里对我来说,禁用的方式NSNumberFormatter从使用区域设置,并具体使用我输入的格式?我试过去:

formatter.locale = nil;
Run Code Online (Sandbox Code Playgroud)

formatter.formatterBehavior = NSNumberFormatterNoStyle;
Run Code Online (Sandbox Code Playgroud)

我的程序的一些输出:

format =#,## 0.00

结果= -8 933 434,38

有一个变量

formatter.localizesFormat = NO;
Run Code Online (Sandbox Code Playgroud)

但这仅适用于OS X.

服务器将告诉我要使用的数字格式,并且需要覆盖用户将其区域设置为的内容.

相关代码:

self.amountFormat = @"##,##0.00";

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
NSLog(@"self.amountFormat = %@", amountFormat);
[formatter setNumberStyle:NSNumberFormatterNoStyle];
[formatter setPositiveFormat: self.amountFormat];
[formatter setLenient:YES];

NSNumber* newNumber = [NSNumber numberWithDouble: [number doubleValue] / 100.0];

NSString* numberString = [formatter stringFromNumber: newNumber];

NSLog(@"numberString = %@",numberString);
Run Code Online (Sandbox Code Playgroud)

产量

[Currency.m:64] self.amountFormat = ##,##0.00
[Currency.m:73] numberString = 1 533 434,34
Run Code Online (Sandbox Code Playgroud)

如果您想测试,请将一般 - 国际 - 地区格式下的设置更改为南非

rin*_*aro 10

至于格式化字符串,由语言环境指定的,方法grouping separator.手段decimal separator,不是文字字符.请参阅格式规范.
要覆盖,您必须指定的语言环境grouping separator,decimal separator.en_US_POSIX

[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
Run Code Online (Sandbox Code Playgroud)

或手动指定grouping separatordecimal separator喜欢:

[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];
Run Code Online (Sandbox Code Playgroud)