我正在尝试解析NSString
with a NSNumberFormatter
喜欢跟随。
NSNumberFormatter *myFormatter = [[[NSNumberFormatter alloc] init];
NSNumber *myNumber = [myFormatter numberFromString:@"42.00000"];
numberFromString
返回一个NSNumber
对象位于模拟器中,但不在设备上。
小数点 (.00000) 导致设备上的返回值为 nil,因为解析 42(不带小数点)效果很好(无论是在模拟器中还是在设备上)。
我使用 NSNumberFormatter 的原因是因为就像它返回的方式一样nil
如果字符串不是有效的数字(这对我来说是不利的:p)。 NS字符串doubleValue
不提供这种行为。还,NSDecimalNumber
decimalNumberWithString
不做这项工作,因为[NSDecimalNumber decimalNumberWithString:@"4a2.00000"]
返回 4。
有什么想法为什么这在设备上不起作用吗?
是地区吗?我尝试设置myFormatter.numberStyle = NSNumberFormatterNoStyle
and NSNumberFormatterDecimalStyle
但它什么也改变不了。
正如 @rmaddy 在评论中已经说过的,小数点分隔符NSNumberFormatter
是
依赖于语言环境。如果您有固定的输入格式,以点作为小数点分隔符,
您可以设置“POSIX 区域设置”:
NSNumberFormatter *myFormatter = [[NSNumberFormatter alloc] init];
[myFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
NSNumber *myNumber = [myFormatter numberFromString:@"42.00000"];
或者,您可以使用NSScanner
解析双精度值,例如描述
这里:将 NSString 解析为 Double https://stackoverflow.com/questions/12865981/parsing-nsstring-to-double
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)