C#\.Net 实现将字符串表达式计算成数字结果的两种方式

290 阅读1分钟

方法一:

通过DataTableCompute方法进行计算

优缺点分析:

1、优点:使用方便,便捷,能快速上手

2、缺点:只能计算普通表达式,不能嵌套字符串比如我想设置参数pi为计算的时候 读取pi为Math.PI

代码演示:

 /// <summary>
 /// 把字符串公式计算成数字
 /// </summary>
 /// <returns></returns>
 [HttpGet]
 public IActionResult Get()
 {
     string ComputeStr1 = "1+2*3-4/2*(1+2)";
     //第一种方法: 使用DataTable.Compute方法计算公式
     DataTable dt = new DataTable();
     var num1 = dt.Compute(ComputeStr1, null);

     return Ok(num1);
 }
 

方法二:

通过引入Nuget包NCalcEvaluate方法进行计算

优缺点分析:

1、优点:能随意定制字符串只要最终结果符合是所有的数字在进行计算,就可以算出结果

2、缺点:需要引入Nuhet包,间接性使用

代码演示:

 /// <summary>
 /// 把字符串公式计算成数字
 /// </summary>
 /// <returns></returns>
 [HttpGet]
 public IActionResult Get()
 {
      string ComputeStr2 = "1+2*3-4/2*(1+2)+pi";
      //第二种方法: 使用Ncalc.Evaluate方法计算公式
      Expression exp = new Expression(ComputeStr2);
      exp.Parameters["pi"] = Math.PI;
      var num2 = exp.Evaluate();

     return Ok(num2);
 }

以上就是C# 两种计算字符串的方法,希望能帮到大家!!!