use*_*560 2 cocoa-touch objective-c nsnumberformatter ios
我正试图解析NSString一个NSNumberFormatter像下面这样的人.
NSNumberFormatter *myFormatter = [[[NSNumberFormatter alloc] init];
NSNumber *myNumber = [myFormatter numberFromString:@"42.00000"];
Run Code Online (Sandbox Code Playgroud)
numberFromString返回NSNumber模拟器中的对象,但不返回设备上的对象.
小数(.00000)导致设备上的返回值为零,因为解析42(没有小数)工作正常(在模拟器和设备上).
我使用NSNumberFormatter的原因是因为nil如果字符串不是有效数字(它在这里对我不利,那就是它返回的方式:p).NSString doubleValue不提供这种行为.此外,NSDecimalNumber decimalNumberWithString由于[NSDecimalNumber decimalNumberWithString:@"4a2.00000"]返回4 ,因此无法完成工作.
任何想法为什么这不适用于设备?
这是现场吗?我尝试过设置myFormatter.numberStyle = NSNumberFormatterNoStyle,NSNumberFormatterDecimalStyle但它什么都没改变.
Mar*_*n R 12
正如@rmaddy在评论中已经说过的那样,小数分隔符NSNumberFormatter依赖于语言环境.如果您有一个固定的输入格式,点为小数分隔符,则可以设置"POSIX语言环境":
NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
NSNumber *myNumber = [myFormatter numberFromString:@"42.00000"];
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用NSScanner解析double值,如下所述:将NSString解析为Double
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |