【发布时间】:2014-03-14 19:02:17
【问题描述】:
我正在尝试用NSNumberFormatter 解析NSString,如下所示。
NSNumberFormatter *myFormatter = [[[NSNumberFormatter alloc] init];
NSNumber *myNumber = [myFormatter numberFromString:@"42.00000"];
numberFromString 在模拟器中返回 NSNumber 对象,但不在设备上。
小数 (.00000) 导致设备上的返回值为 nil,因为解析 42(不带小数)可以正常工作(在模拟器和设备上)。
我使用 NSNumberFormatter 的原因是,如果字符串不是有效数字,它会如何返回nil(这对我不利:p)。 NSString doubleValue 不提供这种行为。此外,NSDecimalNumber decimalNumberWithString 也无法完成这项工作,因为 [NSDecimalNumber decimalNumberWithString:@"4a2.00000"] 返回 4。
任何想法为什么这不能在设备上工作?
是语言环境吗?我尝试设置myFormatter.numberStyle = NSNumberFormatterNoStyle 和NSNumberFormatterDecimalStyle,但没有任何改变。
【问题讨论】:
-
解析
42.00000仅在设备(或模拟器)的区域设置为使用句点作为小数分隔符的区域设置时才有效。
标签: ios objective-c cocoa-touch nsnumberformatter