2011-09-16 18 views
5

में करने के लिए स्ट्रिंग सूत्र कन्वर्ट करने के लिए अगर मैं एक स्ट्रिंग चर है:कैसे एक नियम के साथ एक गणितीय सूत्र सी #

string myformula = "3 * 5 + Pow(2,3)"; 

मैं कैसे एक गणितीय सूत्र है कि संकलक गणना कर सकते हैं करने के लिए इस स्ट्रिंग में बदल सकते हैं?

+0

कुछ संकलक गणना कर सकते हैं आप कोड में एक निरंतर अभिव्यक्ति की जरूरत है, तो कुछ '3 * 5 + 2 * 2 * 2' के लिए समान है। क्या आपका मतलब यह नहीं है कि आपके स्वयं के कोड का मूल्यांकन करना चाहिए? – Joey

+3

संकलक केवल –

+1

संकलित करता है अंत में मुझे FLEE लाइब्रेरी मिली। यह टूल मुफ्त और पूरी तरह से इस उद्देश्य के लिए उपयुक्त है। –

उत्तर

9

अंत में मुझे इस उद्देश्य के लिए FLEE लाइब्रेरी मिली। उपकरण आपके उद्देश्य के लिए नि: शुल्क और पूरी तरह फिट है।

// Define the context of our expression 
ExpressionContext context = new ExpressionContext(); 
// Allow the expression to use all static public methods of System.Math 
context.Imports.AddType(typeof(Math)); 
// Define an int variable 
context.Variables["a"] = 100; 
// Create a dynamic expression that evaluates to an Object 
IDynamicExpression eDynamic = context.CompileDynamic("sqrt(a) + pi"); 
// Evaluate the expressions 
double result = (double)eDynamic.Evaluate(); 
4

सुनिश्चित नहीं है कि आप एक कंपाइलर का उल्लेख क्यों करेंगे, लेकिन गणित अभिव्यक्ति मूल्यांकनकर्ता का उपयोग करने का सबसे आसान तरीका उदाहरण के लिए NCalc होगा।

0

शायद this उपयोगी है, लेकिन वह पुस्तकालय "Math.Pow" का समर्थन नहीं कर सकता: नीचे कैसे इस पुस्तकालय का उपयोग करने के एक उदाहरण है।

0

आप माइक्रोसॉफ्ट स्क्रिप्ट कंट्रोल लाइब्रेरी (COM) में एक संदर्भ जोड़ सकते हैं और अभिव्यक्ति का मूल्यांकन करने के लिए इस तरह के कोड का उपयोग कर सकते हैं। (इसके अलावा JScript के लिए काम करता है।)

MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl(); 
sc.Language = "VBScript"; 
string expression = "1 + 2 * 7"; 
object result = sc.Eval(expression);    
MessageBox.Show(result.ToString()); 
संबंधित मुद्दे