我在字符串上生成了一个数学表达式,并使用codingseb expression evaluator对其求值。它可以计算基本运算符和括号,这很棒,但我不能用它来计算带指数的字符串。例如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
有没有办法实现这一点呢?有其他选择吗?
发布于 2019-04-18 00:00:41
找到答案了!首先我认为"2 + Pow(3,4) - 2“是错误的,因为我一直得到InvalidCastException。然后休息了一下,并再次检查了我的代码,发现问题出在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;谢谢你的其他答案!
发布于 2019-04-17 22:19:57
这给了我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));
}
}https://stackoverflow.com/questions/55728782
复制相似问题