我正在使用格式为“##,##0.00”的 NSNumberFormatter
,但我的语言环境设置为使用货币格式如“## ##0.0”的南非地区“,有没有办法让我禁用 NSNumberFormatter
使用语言环境,并专门使用我为格式输入的内容?我已经试过了:
formatter.locale = nil;
和
formatter.formatterBehavior = NSNumberFormatterNoStyle;
我程序的一些输出:
格式 = #,##0.00
结果 = -8 933 434,38
有一个变量
formatter.localizesFormat = NO;
但这仅适用于 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);
输出
[Currency.m:64] self.amountFormat = ##,##0.00
[Currency.m:73] numberString = 1 533 434,34
如果您想测试,请将通用 - 国际 - 区域格式下的设置更改为南非
最佳答案
对于格式化字符串,,
表示分组分隔符
,.
表示小数分隔符
,由locale指定, 不是文字字符。参见 the format specification .
要覆盖它,您必须指定 grouping separator
是 ,
和 decimal separator
是 .
的区域设置,例如 en_US_POSIX
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
或手动指定分组分隔符
和小数分隔符
,如:
[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];
关于ios - 禁用 NSNumberFormatter 的语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25321578/