2011-03-22 96 views
6

我想得到哪个是设备上设置的小数符号。到现在为止,我用这个方法:如何获取小数点符号?

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]; 

这是工作的罚款,直至现在,当我在另一个设备(4.3)上的测试 - null返回。 可能是什么问题?

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

以后编辑:
我可以使用:

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

但为什么其他方式,能源部没有这个特殊的设备吗?

回答

24
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease]; 
NSString *decimalSymbol = [formatter decimalSeparator]; 
2

decimalSeparator

返回包含接收器使用来表示十进制分隔符的字符的字符串。

- (NSString *)decimalSeparator

实施例:

decimalSymbol = [F decimalSeparator];

20

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

[[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator] 
+2

或者从iOS的10+,'[NSLocale currentLocale] .decimalSeparator;' – CyberMew 2017-02-07 07:37:17

1

夫特3版本:

NSLocale.current.decimalSeparator