首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对具有指数的字符串计算生成的数学表达式,即(1+2-3)*4^5 =答案

对具有指数的字符串计算生成的数学表达式,即(1+2-3)*4^5 =答案
EN

Stack Overflow用户
提问于 2019-04-17 21:32:56
回答 2查看 103关注 0票数 1

我在字符串上生成了一个数学表达式,并使用codingseb expression evaluator对其求值。它可以计算基本运算符和括号,这很棒,但我不能用它来计算带指数的字符串。例如1+2-5^7

代码语言:javascript
复制
string a = "2+3^4-2";
int result;

ExpressionEvaluator e = new ExpressionEvaluator();     
var mathExpressionResult = e.Evaluate(expression);
result = (int)mathExpressionResult;

我期望结果是81,但实际输出是7

有没有办法实现这一点呢?有其他选择吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-18 00:00:41

找到答案了!首先我认为"2 + Pow(3,4) - 2“是错误的,因为我一直得到InvalidCastException。然后休息了一下,并再次检查了我的代码,发现问题出在result = (int)mathExpressionResult;Pow(x,y)返回双精度值,因此应为result = (double)mathExpressionResult;

代码语言:javascript
复制
string a = "2+ Pow(3,4)-2";
double result;

ExpressionEvaluator e = new ExpressionEvaluator();     
var mathExpressionResult = e.Evaluate(expression);
result = (double)mathExpressionResult;

谢谢你的其他答案!

票数 0
EN

Stack Overflow用户

发布于 2019-04-17 22:19:57

这给了我81...

代码语言:javascript
复制
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));
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55728782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档