2012-11-27 3 views
2

plist에 문자열로 1/129600.0 값을 저장했습니다. 반환 값은 내가 문자열로 검색 할 수 있어요하지만 난 그것을 얻고 double로 변환하려고 할 때 1.0.I도 문자열을 double로 반환하는 문자열을 변경합니다.

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

및 로그에

을 CFString 시도로 1/129600.0 및 1.0

+0

당신 UIWebView stringByEvaluatingJavaScriptFromString을 사용하여 javascript로 호출 할 수 있습니다. "eval (expression)", value = @ "1/1296 ..."; value = [NSStr ing stringWithFormat @ "eval (% @)", value]; stringByEvaluatingJavaScriptFromString을 호출하는 중 – zt9788

답변

2

이 코드는 잘 작동 해보십시오 :

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

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

NSLog(@"%@",result); 
NSLog(@"%.10f",[a doubleValue]); 
1

1/129600.0은 ObjC를 비롯한 대부분의 프로그래밍 언어에서 유효한 숫자가 아닙니다. 문자열을 파싱하고 해석해야합니다.

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); 
+0

호환되지 않는 포인터 경고 – Sekhar

+0

작동하지 않습니다. –

+0

죄송합니다, 회신을 잊어 버렸습니다. – Tieme

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); 
관련 문제