如何获得小数符号?

时间:2011-03-22 20:52:10

标签: iphone objective-c cocoa-touch 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];

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

是否有其他方法可以检索小数点?

后期编辑:
我可以用:

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

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

5 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:21)

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

[[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator]

答案 2 :(得分:5)

Swift 4

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

  

Swift覆盖到Foundation框架提供了Locale   结构,桥接到NSLocale类。

  

在需要引用语义或其他时使用NSLocale   基金会特有的行为。

NSLocale Apple doc

答案 3 :(得分:5)

Swift 4版本:

Locale.current.decimalSeparator

答案 4 :(得分:2)

decimalSeparator

返回一个字符串,其中包含接收器用于表示小数分隔符的字符。

- (NSString *)decimalSeparator

示例:

decimalSymbol = [f decimalSeparator];