使用即时通讯的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 separator和decimal separator喜欢:
[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |