![]() |
1
39
是的,您可以让C编译器在运行时对其进行评估。 见: CSharpCorner |
![]() |
2
123
如果要计算字符串表达式,请使用下面的代码段。
|
![]() |
3
70
使用编译器执行此操作意味着内存泄漏,因为生成的程序集已加载且从未释放。它的性能也不如使用真正的表达式解释器。为此,您可以使用 Ncalc 它是一个开放源码框架,仅具有这个意图。如果已经包含的变量不够,还可以定义自己的变量和自定义函数。 例子:
|
![]() |
4
48
试试这个:
|
![]() |
5
14
你可以看看“xpathnavigator.evaluate”,我用它来处理我的网格视图的数学表达式,它对我来说很好。 以下是我在程序中使用的代码:
|
![]() |
6
11
这是一个使用堆栈的简单表达式计算器
|
![]() |
7
11
解释其工作原理:
首先,我们做一张桌子
然后是一列,带有一些特定参数(
这个
然后,
然后,将一行添加到具有表达式属性的个性化列的表中,通过
最后,只需返回存储在第0行“eval”列的单元格中的值(它是一个索引,从零开始计数),并使用
就这些……工作完成了! 这里有一个需要理解的代码,它的作用是一样的…它不在方法中,也有解释。
首先,使用
然后,一列
接下来,我们给这个列命名。这样我们就可以在存储到表中时搜索它的内容。通过完成
然后,表达式,这里我们可以放置一个字符串类型的变量,在这种情况下,有一个预定义的字符串“5+5/5”,结果是6。
要存储到列中的数据类型
将列添加到表中…
生成要插入到表中的行,该行复制表结构
将行添加到表中
并返回列第0行中单元格的值
一课!!!! |
![]() |
8
4
这是从右向左的执行,因此需要使用适当的paratesis来执行表达式
|
![]() |
9
3
您可以非常容易地通过CSharpCodeProvider运行它,并使用合适的fluff包装它(基本上是一个类型和一个方法)。同样,你也可以通过vb等——或者javascript,正如另一个答案所建议的那样。目前我不知道框架中还内置了其他任何东西。 我希望支持动态语言的.NET 4.0在这方面可能有更好的功能。 |
![]() |
10
3
我最近需要为一个项目做这个,结果我用了 IronPython 做这件事。您可以声明引擎的一个实例,然后传递任何有效的python表达式并获得结果。如果你只是做简单的数学表达式,那就足够了。我的代码最终看起来类似于:
您可能不想为每个表达式创建引擎。您还需要一个对ironpython.dll的引用 |
![]() |
11
3
编辑: 意识到我真的应该把加减法分开来,让它更符合菩萨的要求。 非常感谢Rajesh Jinaga基于堆栈的方法。我发现它对我的需要非常有用。下面的代码是对rajesh方法的一个细微修改,它先处理除法,然后进行乘法,最后进行加法和减法运算。它还允许在表达式中使用布尔值,其中true被视为1,false 0。允许在表达式中使用布尔逻辑。
我知道有一种更清洁的方法可以做到这一点,我想我只是分享一下第一眼,以防有人发现它有用。 |
![]() |
12
2
多亏了拉梅什。我用他的一个简单代码版本从数据库中拉出一个字符串,然后用它在我的代码中做布尔操作。 X是一个像1500或2100之类的数字。 函数将是存储的评估,如x>1400和x<1600
|
![]() |
13
1
没有。您需要使用一些外部库,或者编写自己的解析器。如果您有时间这样做,我建议您编写自己的解析器,因为它是一个非常有趣的项目。否则你需要使用 bcParser . |
![]() |
14
-1
简短回答:我不这么认为。据我所知,C.NET是编译(到字节码)的,不能在运行时计算字符串。然而,jscript.net可以;但是我仍然建议您自己编写一个解析器和基于堆栈的评估器。 |
![]() |
Muhammad Umer · 为什么这个随机数猜谜游戏模拟产生5.8 5 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 6 月前 |
|
D W · Python-将浮点数从2转换为10到100位小数 7 月前 |
![]() |
Bartol · 确定python龟图形中的角度 11 月前 |
|
randomAlgo · 将弹簧设置为相同长度的成本最低 11 月前 |
![]() |
Fyodor · 在C中使用sin和cos计算数学表达式不正确? 12 月前 |
![]() |
Sergio · python中大量数字的乘法 1 年前 |