如何获得小数符号?

Cri*_*tiC 10 iphone cocoa-touch objective-c nsnumberformatter

我想得到设备上设置的十进制符号.直到现在我才使用这种方法:

NSString *decimalSymbol;     
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];    
[f setNumberStyle:NSNumberFormatterDecimalStyle];   
[f setMinimumFractionDigits:2];     
[f setMaximumFractionDigits:2];     
[f setGroupingSeparator:@" "];      

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];    
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];   
[formatter setMinimumFractionDigits:2];     
[formatter setMaximumFractionDigits:2];     
[formatter setGroupingSeparator:@" "];      

NSRange range = {1,1};  

decimalSymbol = [[formatter stringFromNumber:[f numberFromString:[@"" stringByAppendingFormat:@"%.02f", 1.0f]]] substringWithRange:range];  

[formatter release];    
[f release];
Run Code Online (Sandbox Code Playgroud)

直到现在,当我在另一台设备(4.3)上进行测试时,它工作正常 - null返回.可能是什么问题呢?

是否有另一种方法来检索小数符号?

后期编辑:
我可以使用:

decimalSymbol = [[@"" stringByAppendingFormat:@"%.02f", 1.0f] substringWithRange:range];
Run Code Online (Sandbox Code Playgroud)

但为什么另一种方式它不能在这个特定的设备上工作?

Mat*_*uch 30

NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
NSString *decimalSymbol = [formatter decimalSeparator];
Run Code Online (Sandbox Code Playgroud)


Jav*_*aña 21

最好的方法是从当前语言环境中获取小数分隔符,而不使用init任何NSNumberFormatter对象.像这样:

[[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator]
Run Code Online (Sandbox Code Playgroud)

  • 或者从iOS 10 +,`[NSLocale currentLocale] .decimalSeparator;` (2认同)

KrL*_*ler 6

Swift 4版本:

Locale.current.decimalSeparator
Run Code Online (Sandbox Code Playgroud)


Mik*_*laj 5

斯威夫特4

您可以使用Locale.current.decimalSeparatorNSLocale.current.decimalSeparator

基金会框架的Swift覆盖层提供了Locale结构,该结构桥接到NSLocale类。

需要参考语义或其他特定于Foundation的行为时,请使用NSLocale。

NSLocale苹果文档