# Evaluate<T>(string, out T)

> Evaluates a math expression and returns the result.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## Evaluate\<T>(string, T)

```csharp
public static bool Evaluate<T>(string expression, out T value)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): A string containing a mathematical expression (e.g. "4+3").**** (T): The result of the expression evaluation. Supported types are: `int`, `float`, `long`, `double`.

### Returns

| Type                                                          | Description                                                  |
| ------------------------------------------------------------- | ------------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | Indicates whether expression could be evauated successfully. |

### Remarks

The expressions that can be evaluated support:

* arithmetic operators `a+b`, `a-b`, `a*b`, `a/b`,

* power (`a^b`) and modulo (`a%b`) operators,

* parentheses,

* math functions `sqrt(a)`, `floor(a)`, `ceil(a)`, `round(a)`,

* trigonometic functions `cos(a)`, `sin(a)`, `tan(a)` (argument expressed in radians), and a constant `pi`.

If the expression can not be evaluated, the function returns `false` and the result value is set to zero.

### Examples

```csharp
using UnityEditor;
using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    [MenuItem("Example/Int Expression")]
    public static void IntExample()
    {
        ExpressionEvaluator.Evaluate("2+3", out int result);
        // prints 5
        Debug.Log(result);
    }

    [MenuItem("Example/Float Expression")]
    public static void FloatExample()
    {
        ExpressionEvaluator.Evaluate("sqrt(cos(pi/3))", out float result);
        // prints 0.7071068
        Debug.Log(result);
    }
}
```
