C# 使用指数(1+;2-3)*4^5=答案对字符串上生成的数学表达式求值
我在一个字符串上生成了一个数学表达式,并用它来求值。它可以计算基本运算符和括号,这很好,但我不能用它来计算带指数的字符串。e、 g.C# 使用指数(1+;2-3)*4^5=答案对字符串上生成的数学表达式求值,c#,C#,我在一个字符串上生成了一个数学表达式,并用它来求值。它可以计算基本运算符和括号,这很好,但我不能用它来计算带指数的字符串。e、 g.1+2-5^7 string a = "2+3^4-2"; int result; ExpressionEvaluator e = new ExpressionEvaluator(); var mathExpressionResult = e.Evaluate(expression); result = (int)mathExpressionResult
1+2-5^7
string a = "2+3^4-2";
int result;
ExpressionEvaluator e = new ExpressionEvaluator();
var mathExpressionResult = e.Evaluate(expression);
result = (int)mathExpressionResult;
我预计结果是81,但实际输出是7
有没有办法让这起作用?有其他选择吗?这给了我一个81
using System;
using CodingSeb.ExpressionEvaluator;
public class Program
{
public static void Main()
{
string expression ="2 + Pow(3, 4) - 2";
ExpressionEvaluator evaluator = new ExpressionEvaluator();
Console.WriteLine("Result "+ evaluator.Evaluate(expression));
}
}
这给了我一个81
using System;
using CodingSeb.ExpressionEvaluator;
public class Program
{
public static void Main()
{
string expression ="2 + Pow(3, 4) - 2";
ExpressionEvaluator evaluator = new ExpressionEvaluator();
Console.WriteLine("Result "+ evaluator.Evaluate(expression));
}
}
找到了答案!首先,我认为“2+Pow(3,4)-2”是错误的,因为我不断地得到无效的例外。然后在稍作休息并再次查看我的代码后,发现问题是
result=(int)mathExpressionResult代码>Pow(x,y)
返回一个双精度值,因此它应该是result=(double)mathExpressionResult代码>
string a = "2+ Pow(3,4)-2";
double result;
ExpressionEvaluator e = new ExpressionEvaluator();
var mathExpressionResult = e.Evaluate(expression);
result = (double)mathExpressionResult;
谢谢你的其他答案 找到了答案!首先,我认为“2+Pow(3,4)-2”是错误的,因为我不断地得到无效的例外。然后在稍作休息并再次查看我的代码后,发现问题是result=(int)mathExpressionResult代码>Pow(x,y)
返回一个双精度值,因此它应该是result=(double)mathExpressionResult代码>
string a = "2+ Pow(3,4)-2";
double result;
ExpressionEvaluator e = new ExpressionEvaluator();
var mathExpressionResult = e.Evaluate(expression);
result = (double)mathExpressionResult;
谢谢你的其他答案 ,看起来语法是Pow(x,y)
而不是x^y
;“随机生成”和Unity3D对这个问题没有任何影响。是的。但我想知道的是,如果字符串值是正确生成的,那么如何在代码中使用它,所以你要问的是如何将“2+3^4-2”转换为“2+Pow(3,4)-2”?@canton7如果观察到运算符优先级,我希望是2+Pow(3,4)-2
,看起来语法是Pow(x,y)
不是x^y
。这个问题似乎有两个不相关的部分可以删除;“随机生成”和Unity3D对这个问题没有任何影响。是的。但我想知道的是,如果字符串值是正确生成的,那么如何在我的代码中使用它,所以你要问的是如何将“2+3^4-2”转换为“2+Pow(3,4)-2”?@canton7如果观察到运算符优先级,我希望是2+Pow(3,4)-2
。