为了账号安全,请及时绑定邮箱和手机立即绑定

解析数学表达式

/ 猿问

解析数学表达式

慕婉清6462132 2019-10-21 15:24:55

是否有一种简单的方法来解析以字符串表示的简单数学表达式,例如[x +(2 * x)/(1-x)),为x提供值,并获得结果?

我通过几个在线示例查看了VSAEngine,但是,我收到警告,该组件已被弃用,请不要使用它。

如果有什么不同,我正在使用.NET 4.0。


查看完整描述

3 回答

?
四季花海

您可以尝试使用DataTable.Compute。


一个相关的是DataColumn.Expression。


还要检查一下:在vb.net中做数学运算,例如javascript中的Eval


注意:我自己没有使用过。


查看完整回答
反对 回复 2019-10-21
?
慕雪9262066

我强烈建议不要选择现有的通用表达式评估器,而不要选择专用的数学评估器。这样做的原因是表达式评估器不仅限于数学。一个聪明的人可以使用它在框架中创建任何类型的实例,并对该类型调用任何方法,这将使他能够做一些绝对不受欢迎的事情。例如:new System.Net.WebClient().DownloadFile("illegalchildpornurl", "C:\openme.gif")将在大多数情况下进行评估,并按其听起来的方式做(并同时使您成为重罪犯)。

这并不意味着不要寻找已经写好的东西。这只是意味着要小心。您想要一个只做数学的数学。已经存在的大多数内容都没有那么挑剔。


查看完整回答
反对 回复 2019-10-21
?
哈士奇WWW

我最近正在使用mXparser,这是一个数学解析器库。它为您提供了很大的灵活性,例如变量,函数,常量,运算符。您将在下面找到一些用法示例:


示例1-简单公式


Expression e = new Expression("1 + pi");

double v = e.calculate();

示例2-具有变量,函数等的公式


Argument x = new Argument("x = 2");

Constant a = new Constant("a = sin(10)");

Function f = new Function("f(t) = t^2");

Expression e = new Expression("2*x + a - f(10)", x, a, f);

double v = e.calculate();

https://mxparser.codeplex.com/


http://mathparser.org/


近期发现的-您可以通过mXparser支持的Scalar Calculator应用程序尝试语法(并查看用例)。


查看完整回答
反对 回复 2019-10-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信