11

我想知道哪个是设备上设置的十进制符号。到目前为止,我一直在使用这种方法:

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

但为什么它在这个特定设备上不起作用?

4

5 回答 5

30
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
NSString *decimalSymbol = [formatter decimalSeparator];
于 2011-03-22T21:01:34.033 回答
21

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

[[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator]
于 2014-11-24T08:41:32.553 回答
9

斯威夫特 4 版本:

Locale.current.decimalSeparator
于 2018-08-30T15:38:29.647 回答
6

斯威夫特 4

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

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

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

NSLocale 苹果文档

于 2017-07-31T12:42:22.433 回答
2

小数分隔符

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

- (NSString *)decimalSeparator

例子:

小数符号 = [f 小数分隔符];

于 2011-03-22T21:01:43.763 回答