Evaluate String

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 ...]
Who is Participating?
Mohammed NasmanConnect With a Mentor Software DeveloperCommented:
kouroshparsaAuthor Commented:
I tried this:
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.
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
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

I wanted to convert this code for you, untill I found this code (VB.NET!!):


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))))


This code works realy great!!
Daniellus83Connect With a Mentor Commented:

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:


>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!

At the end of this thread i posted some code.


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 + _
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.
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.