基于文本的基本公式计算器函数/类

Posted

技术标签:

【中文标题】基于文本的基本公式计算器函数/类【英文标题】:Text Based Basic Formula Calculator Function/Class 【发布时间】:2017-09-19 01:08:15 【问题描述】:

寻找类似的东西

int Result; 
DataTable dt2 = new DataTable();
var v = dt2.Compute("3+2-34*12", "");
Result=Convert.ToInt32(v);

上面的代码,它解决了文本基础公式。不幸的是,上面的代码只适用于一些基本的运算符(+、-、/、*)。需要更复杂一点的(至少像平方根,^)。

你能帮我找到一些更复杂的方程来解决吗?

【问题讨论】:

mathparser.org ? 【参考方案1】:

您可以为此使用 Roslyn scripting API。添加 Microsoft.CodeAnalysis.CSharp.Scripting 包并像这样评估 C# 代码:

static async Task<double> EvaluateFormulaAsync(string formula)

    return await CSharpScript.EvaluateAsync<double>(formula,
        ScriptOptions.Default.WithImports("System.Math"));

用法:

var result = EvaluateFormulaAsync("Sqrt(2) + 2 * 15").Result; // 31.4142135623731

注意:脚本 API 需要 .NET Framework 4.6+ 或 .NET Core 1.1

【讨论】:

以上是关于基于文本的基本公式计算器函数/类的主要内容,如果未能解决你的问题,请参考以下文章

[损失函数]——交叉熵

Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类split函数基于指定分隔符拆分数据列的内容为列表使用len计算每个列表的长度

在EXCEL如何输入求平方的公式

在EXCEL中如何使用公式计算今天早上8:00到11:40的用了多少个小时?

面向对象代码作业

使用 SCHEMABINDING 更改函数,用作具有索引的计算字段的公式