"Calculator"를 구현하여 문자열 (예 : 2^3/2
)을 파싱하고 연산 결과를 계산하기 쉽습니다. 그러나 이미이 작업을 수행 할 수있는 라이브러리가 있습니까? 앱에서문자열로 표시된 수학 표현식을 평가하려면 어떻게해야합니까?
답변
dotMath 라이브러리가이 작업을 수행의 샘플을 생각 임의의 복잡한 문자열
을 평가하도록 요청할 수 있습니다.Flee도 옵션처럼 보입니다. http://www.codeplex.com/Flee –
+1 :이 라이브러리를 사용했고 매우 효과적입니다. –
임베드 IronPython을, 당신은 내가 그들도 같은 일
이렇게하려면 일종의 수학 파서가 필요합니다. 이전에 C# Expression Parser using RPN by DeepEddie을 사용했거나 사용하는 표현의 복잡성이 더 제한적인 경우에는 직접 만들 수도 있습니다.
두려워하지 마십시오. 실제로 만드는 것은 꽤 쉽습니다.
매우 간단한 경우에만 "쉽다" –
대부분의 경우 경향이 있습니다. 그것이 더 간단 할 때 더 쉬워진다. –
난 그냥 입력 문자열을 구문 분석 계산기를 작성하는 명백한 쉬운 거짓말을 의미합니다. 실제로는 사소한 문제입니다. 날 믿지 않으면 해봐. –
체크 아웃 Reverse Polish notation을 확인하십시오. 현대 계산기에서 널리 사용됩니다.
이것이 도움이되는 방법을 모르겠다. OP는 기존 라이브러리를 찾고 자신의 파서를 구현하지 않을 것입니다 (따라서 바퀴를 재발 명합니다). –
그러나 찾고있는 것의 이름을 알고 있으면 도움이 될 수 있습니다. –
JScript 라이브러리는 더 이상 사용되지 않지만 더 이상 사용되지 않습니다. 네가 할 수 있다고 말한 것이 아니다.
내가 이것을 사용하고 있습니다 :
using System;
using System.CodeDom.Compiler;
using System.Reflection;
using Microsoft.JScript;
public class JScriptEvaluator
{
public int EvalToInteger(string statement)
{
string s = EvalToString(statement);
return int.Parse(s.ToString());
}
public double EvalToDouble(string statement)
{
string s = EvalToString(statement);
return double.Parse(s);
}
public string EvalToString(string statement)
{
object o = "-1";
try
{
o= EvalToObject(statement);
}
catch { o = "-1"; }
return o.ToString();
}
public object EvalToObject(string statement)
{
return _evaluatorType.InvokeMember(
"Eval",
BindingFlags.InvokeMethod,
null,
_evaluator,
new object[] { statement }
);
}
public JScriptEvaluator()
{
CodeDomProvider provider = new Microsoft.JScript.JScriptCodeProvider();
CompilerParameters parameters;
parameters = new CompilerParameters();
parameters.GenerateInMemory = true;
CompilerResults results;
results = provider.CompileAssemblyFromSource(parameters, _jscriptSource);
Assembly assembly = results.CompiledAssembly;
_evaluatorType = assembly.GetType("Evaluator.Evaluator");
_evaluator = Activator.CreateInstance(_evaluatorType);
}
private object _evaluator = null;
private Type _evaluatorType = null;
private readonly string _jscriptSource =
@"package Evaluator
{
class Evaluator
{
public function Eval(expr : String) : String
{
return eval(expr);
}
}
}";
}
- 1. MySQL, 숫자로 평가하려면 어떻게해야합니까?
- 2. R : 캐릭터 개체에서 수학 표현식을 만드는 방법은 무엇입니까?
- 3. VS 빌드 명령 매크로를 평가하려면 어떻게해야합니까?
- 4. Nant에서 문자열을 속성 이름으로 평가하려면 어떻게해야합니까?
- 5. 문자열로 표시된 IP 주소를 어떻게 증분합니까?
- 6. Android 기기에서 피치 추적 알고리즘의 성능을 안정적으로 평가하려면 어떻게해야합니까?
- 7. 이 수학 표현식을 프로그래밍 방식으로 어떻게 기록합니까?
- 8. Ruby는 수학 표현식을 true/false로 어떻게 평가합니까?
- 9. PHP : 문자열로 표시된 클래스 이름에 해당하는 instanceof
- 10. jQuery : 여러 개의 정규 표현식을 문자열로 바꾸시겠습니까?
- 11. 공백을 문자열로 스캔하려면 어떻게해야합니까?
- 12. 이 표현식을 LINQ로 변환하려면 어떻게해야합니까?
- 13. 파이썬에서 정규 표현식을 만들려면 어떻게해야합니까?
- 14. 표현식을 람다 식으로 변환하려면 어떻게해야합니까?
- 15. 파이썬에서 정규 표현식을 사용하려면 어떻게해야합니까?
- 16. Python/OpenGL에서 수학 표기법 렌더링?
- 17. DataContractJsonSerializer가 객체를 문자열로 직렬화하도록하려면 어떻게해야합니까?
- 18. 개체의 속성을 문자열로 얻으려면 어떻게해야합니까?
- 19. Perl 정규 표현식을 문자열을 정규 표현식의 부분 문자열로 대체하십시오.
- 20. Java에서 문자열로 저장된 부울 표현식을 엄격하게 평가할 수 있습니까?
- 21. MySQL 쿼리에 수학 함수를 적용하려면 어떻게해야합니까?
- 22. 개미 ReplaceRegExp 작업에서 수학 함수를 수행하려면 어떻게해야합니까?
- 23. jCarouselLite : 현재 표시된 이미지의 값을 얻으려면 어떻게해야합니까?
- 24. 속성으로 표시된 속성의 인스턴스 값을 얻으려면 어떻게해야합니까?
- 25. MySQL 내부에 간단한 수학 공식을 계산하려면 어떻게해야합니까? 내 내부
- 26. MySQL은 복잡한 표현식을 계산합니다
- 27. 수학 학습을위한 언어 - "평신도를위한 수학"
- 28. PHP : 정규 표현식을 예제와 일치 시키려면 어떻게해야합니까?
- 29. 파이썬에서 정규 표현식을 강조 표시하려면 어떻게해야합니까?
- 30. 긴 정규 표현식을 화면에 맞도록 작성하려면 어떻게해야합니까?
당신은 의미합니까 (2^3)/2^(3/2) 2? – Gumbo
컴파일 된 언어 C#은 eval 함수를 가지고 있지 않다. (예를 들어 perl과 다르다) –
'3을 2로 나눈 값'또는 '2 XOR 3을 나눈 값 2? – Earlz