2012-10-20 2 views
2

문자열 수식을 float로 평가하려고하지만 솔루션을 찾을 수 없습니다. 다음은 그 예입니다. 이런 방식으로 약 200 개의 수식을 계산해야합니다.XCode X식이 포함 된 문자열 수식을 내부에서 계산하는 방법

- NSString *Formula; 
- Float *Result; 
- Float *x 

- x = 12; 
- Formula = @"12.845*x+(-0.505940)"; 

= 결과 평가/계산 (식);

그런 다음 수식의 결과로 결과를 사용합니다. -> 결과 = @ "12.845 * x + (- 0.505940)";

답변

0

당신은 다음과 같이 수행해야합니다

  1. 대체를 x를 문자열 값으로
  2. 이 계산을
  3. 복귀를 수행 Reverse Polish Notation
  4. 의 스택에 피연산자 (값)와 연산자를 가지고 \ 결과

이것이 내가하는 방법입니다.

8

당신은 NSExpression를 사용할 수 있습니다

NSString *formula = @"12.845*x+(-0.505940)"; 
float x = 12.0; 

NSExpression *expr = [NSExpression expressionWithFormat:formula]; 
NSDictionary *object = [NSDictionary dictionaryWithObjectsAndKeys: 
          [NSNumber numberWithFloat:x], @"x", nil]; 

float result = [[expr expressionValueWithObject:object context:nil] floatValue]; 
NSLog(@"%f", result); 
// Output: 153.634064 

이 심지어 sqrt, exp와 같은 일부 기능을 작동 ... 지원 기능의 목록은 NSExpression 설명서를 참조하십시오.

+0

고마워요, 그것은 작동합니다. – fred

+1

이 항목을 수락해야합니다. –

0

스위프 티 응답,

let formula = "12.845*x+(-0.505940)" 
let x = 12 

let expr = NSExpression(format: formula) 
let object = ["x":x] 

let result = expr.expressionValue(with: object, context: nil) 

print(result) 
//Output: 153.63406 
관련 문제