我想知道设备上设置的十进制符号是哪一个。直到现在我才使用这种方法:
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];
但是为什么另一种方式不能在这个特定的设备上工作?
答案 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.decimalSeparator
或NSLocale.current.decimalSeparator
。
Swift覆盖到Foundation框架提供了Locale 结构,桥接到NSLocale类。
和
在需要引用语义或其他时使用NSLocale 基金会特有的行为。
答案 3 :(得分:5)
Swift 4版本:
Locale.current.decimalSeparator
答案 4 :(得分:2)
decimalSeparator
返回一个字符串,其中包含接收器用于表示小数分隔符的字符。
- (NSString *)decimalSeparator
示例:
decimalSymbol = [f decimalSeparator];