kouroshparsa
asked on
Evaluate String
Hi.
In order to evaluate a string like "2+sin(3)" I've been using a great control called MSScript.
Unfortunately, the control can not calculate sine, cosine of big numbers of type double, also it can not calculate inverse trigonometrics like Asin(number).
I want to know if there is a method in the vb.NET library that can evaluate the string.
Do you know a free full version control that would do it better than MSScript ?
I know how to make that type of method myself, but it takes a lot of time.
[You don't need to comment about using excel or ...]
In order to evaluate a string like "2+sin(3)" I've been using a great control called MSScript.
Unfortunately, the control can not calculate sine, cosine of big numbers of type double, also it can not calculate inverse trigonometrics like Asin(number).
I want to know if there is a method in the vb.NET library that can evaluate the string.
Do you know a free full version control that would do it better than MSScript ?
I know how to make that type of method myself, but it takes a lot of time.
[You don't need to comment about using excel or ...]
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
By the way, it is C# and I do not know C# very well. As I've said, I work on VB.NET
I wanted to convert this code for you, untill I found this code (VB.NET!!):
http://www.codeproject.com/vb/net/math_expression_evaluator.asp
I tried it with: "arctan(100)" and as you know the arc(+infity) converges to 1/2*Pi... and the program answered correct (something like 1,56...)
btw: the code works with "arc.." in stead of "a.." (like arcsin, instead of asin). This you can easily change; search the code for:
Case "arcsin"
Return (Math.Asin(CDbl(args(1))))
change it into
Case "asin"
Return (Math.Asin(CDbl(args(1))))
etc...
This code works realy great!!
http://www.codeproject.com/vb/net/math_expression_evaluator.asp
I tried it with: "arctan(100)" and as you know the arc(+infity) converges to 1/2*Pi... and the program answered correct (something like 1,56...)
btw: the code works with "arc.." in stead of "a.." (like arcsin, instead of asin). This you can easily change; search the code for:
Case "arcsin"
Return (Math.Asin(CDbl(args(1))))
change it into
Case "asin"
Return (Math.Asin(CDbl(args(1))))
etc...
This code works realy great!!
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
At the end of this thread i posted some code.
http://www.experts-exchange.om/Programming/Programming_Languages/Dot_Net/VB_DOT_NET/Q_21109510.
html
You could modify it at run time in oder to make calculations.
Add custom methods to the class at runtime like
"Public Function Calculate() as double" + vbCrLf + _
"Return 2+sin(3)" + vbCrLf + _
"End Function" + vbCrLf + _
You would have to include System.Math
"Imports System.Math" + vbCrLf + _
http://www.experts-exchange.om/Programming/Programming_Languages/Dot_Net/VB_DOT_NET/Q_21109510.
html
You could modify it at run time in oder to make calculations.
Add custom methods to the class at runtime like
"Public Function Calculate() as double" + vbCrLf + _
"Return 2+sin(3)" + vbCrLf + _
"End Function" + vbCrLf + _
You would have to include System.Math
"Imports System.Math" + vbCrLf + _
ASKER
Hi Daniellus83. How is it going?
I did it the way you said and I saw the result, though when I attempt to open the designer, I get the error "The document is opened by another project" (that is not true)...Maybe after restarting my computer it'll go away.
As I've said it is C# and I am getting into vb.NET from vb6 and don't know c# much.
You talked about Asin(a big number), I talked about sin(big number)
The program you mentioned evaluates sin(9999999999^10) to be 9.99999999E+10 which is impossible because
-1<sin<1 (I figured that the problem is the Math library. Microsoft claims that sin(a number as double) but if you try something like msgbox(Math.sin(9999999999 ^10)) you get the same result !!!). And the program does not recognize errors if you enter "2+ss(5)" which is a syntax error, you get ="2"
I'm better off using MSScript...and there are formulas to calculate asin using an available functionality like atan in MSScript.
Well, thanks a lot for participating. I wish you best luck.
Hi wguerram.
The web URL you posted is invalid and I assume what you have, does not relate.
I did it the way you said and I saw the result, though when I attempt to open the designer, I get the error "The document is opened by another project" (that is not true)...Maybe after restarting my computer it'll go away.
As I've said it is C# and I am getting into vb.NET from vb6 and don't know c# much.
You talked about Asin(a big number), I talked about sin(big number)
The program you mentioned evaluates sin(9999999999^10) to be 9.99999999E+10 which is impossible because
-1<sin<1 (I figured that the problem is the Math library. Microsoft claims that sin(a number as double) but if you try something like msgbox(Math.sin(9999999999
I'm better off using MSScript...and there are formulas to calculate asin using an available functionality like atan in MSScript.
Well, thanks a lot for participating. I wish you best luck.
Hi wguerram.
The web URL you posted is invalid and I assume what you have, does not relate.
ASKER
I tried this:
http://www.codeproject.com/vb/net/math_expression_evaluator.asp
but, when I try to run it, I don't see any window designer Form, may be part of the files are missing.
I appreciate the participation, and more ideas.