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)
斯威夫特4
您可以使用Locale.current.decimalSeparator或NSLocale.current.decimalSeparator。
基金会框架的Swift覆盖层提供了Locale结构,该结构桥接到NSLocale类。
和
需要参考语义或其他特定于Foundation的行为时,请使用NSLocale。
| 归档时间: |
|
| 查看次数: |
5699 次 |
| 最近记录: |