将字符串更改为double返回一个

时间:2012-11-27 08:44:31

标签: objective-c ios xcode nsstring

我在plist中将值1 / 129600.0存储为字符串。 我能够将其作为字符串检索,但是当我尝试将其转换为double时,我将其作为1.0。我也尝试了CFString

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

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

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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]);

答案 2 :(得分:1)

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

答案 3 :(得分: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);