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 ...]
LVL 2
kouroshparsaAsked:
Who is Participating?
 
Mohammed NasmanConnect With a Mentor Software DeveloperCommented:
0
 
kouroshparsaAuthor Commented:
Hi.
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.
0
 
kouroshparsaAuthor Commented:
By the way, it is C# and I do not know C# very well. As I've said, I work on VB.NET
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
Daniellus83Commented:
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!!
0
 
Daniellus83Connect With a Mentor Commented:
kouroshparsa;

sorry I saw just that you already found the same project @ codeproject.com. But you got stuck I see...

You have to do this, to use the code into your porject;

> download again the project (see my link above)
> search in the downloaded archive for the file:

      Calc.vb

>copy this to your project and include it (via the solution explorer; rightclick on you project and choose "add existing item")

> Lets say you have this string: To_Be_Evaluated = "(arctan(100) + 5) / sin(3)", you would use the calc-module this way:

        Dim To_Be_Evaluated as String   =    "(arctan(100) + 5) / sin(3)"
        Dim Result_of_evaluation as Double
        Dim Calc As New mcCalc()

        Result_of_evaluation = Calc.evaluate(To_Be_Evaluated)

-------

thats it!! Try it,.. and maybe you like it!

Daniël
0
 
wguerramCommented:
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 + _
0
 
kouroshparsaAuthor Commented:
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.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.