2

我已将值 1/129600.0 作为字符串存储在 plist 中。我能够将其作为字符串检索,但是当我尝试将其转换为双精度时,我将其作为 1.0 得到。我也尝试过 CFString

NSString *value = [[self array]objectAtIndex:m];
double a = [value doubleValue];
NSLog(@"%@",value);
NSLog(@"%f",a);

并且在日志中返回的值为 1/129600.0 和 1.0

4

4 回答 4

2

我猜 1/129600.0 不是有效数字。

尝试创建一个表达式并从中创建一个 NSNumber:

NSString *equation = [[self array]objectAtIndex:m];
NSNumber *a = [[NSExpression expressionWithFormat:equation] expressionValueWithObject:nil context:nil];
double a = [result doubleValue];
NSLog(@"%f", a);
于 2012-11-27T08:50:58.157 回答
2

此代码工作正常,我在 xCode 中尝试过:

NSString *equation = [[self array]objectAtIndex:m];
NSExpression *result = [NSExpression expressionWithFormat:equation];

NSNumber *a = [result expressionValueWithObject:nil context: nil];

NSLog(@"%@",result);
NSLog(@"%.10f",[a doubleValue]);
于 2012-11-27T09:15:28.233 回答
1

1/129600.0不是大多数编程语言(包括 ObjC)中数字的有效表示。您需要自己解析字符串并进行解释。

于 2012-11-27T08:49:13.657 回答
0

试试这个

NSString *value = [[self array]objectAtIndex:m];
NSArray *arr = [value componentsSeparatedByString:@"/"];
double a;
if ([arr count] == 2)
{
   a = [arr objectAtIndex:0]/[arr objectAtIndex:1];
}
NSLog(@"%@",value);
NSLog(@"%f",a);
于 2012-11-27T08:59:06.220 回答