我有一个表达式,我想解析,以获取所有使用的参数的列表.
例如:"X + 5 /(Y - 1)"应该给我以下结果:X,Y
我已经在我的项目中使用了NCalc; 那么可以使用NCalc来获取表达式中使用的参数吗?
根据这个讨论条目(https://ncalc.codeplex.com/discussions/361959),它是,但我不太明白答案.
我们有一个使用 Ncalc 来计算字符串的通用计算例程。然而,当乘法中的值足够小以至于 Ncalc 将它们视为 int 时,我们会遇到一个问题,但结果对于 int 来说太大了。
例子:
var expr = new NCalc.Expression("1740263 * 1234");
object result = expr.Evaluate();
Console.WriteLine(result.ToString());
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
这导致负的 int 值。
有没有办法强制 Ncalc 使用 long 进行计算?
我曾尝试使用参数,这有效,但这意味着要对我们的代码进行重大重写才能实现,如果可能的话,我想避免它。
谢谢
有没有人知道比NCalc更新的表达式评估器?最后一个版本是在2011年,一个(非常)快速的谷歌搜索几乎没有从我能看到的内容返回.
我在一个项目中使用NCalc.有没有办法做日期操作,如
#16/02/2013# - #15/02/2013#= 1
我似乎无法产生结果.
Expression.Evaluate();
Run Code Online (Sandbox Code Playgroud)
对于上述表达式,结果为空.我可以比较两个日期,但有没有办法使用NCalc对它们进行操作?
我在我的新项目中使用Ncalc,它几乎已经拥有了我需要的一切.
我说几乎所有的东西,因为现在我需要扩展一些功能,并添加新的功能,例如:nth root,random等
你知道是否有人已经实现了这些功能吗?或者你可以给我任何提示或指南来扩展Ncalc的功能列表???
提前致谢.
我有一个复杂的 NCALC if 表达式,它是这样的:
if ( {0} == null || {1} == 0 ,{2} * ({3} * {4} + {5}), ({2} * ({3} * {4} + {5}))/{1})
Run Code Online (Sandbox Code Playgroud)
这给了我一些意想不到的错误,如下所示:
在第 1:6 行的 '==' 处缺少 ')'
在第 1:37 行的“UnsetValue”处缺少 EOF
这里有什么问题 - 我找不到 NCALC 是否支持 null。如果是这样,那么上面的表达式可能有什么问题。请帮忙!!
所以我有一个很好的复杂的C#代码来处理数学方程式的替换.它的工作几乎完美.然而,当给出方程(x - y + 1) / z和值时x=2 y=0 z=5,它失败并且莫名其妙地失败.
问题不在于值传递给函数错误.没关系.问题是无论我使用什么类型,C#似乎认为3/5 = 0.
这是有问题的代码段:
public static void TrapRule(string[] args)
{
// ...
string equation = args[0];
int ordinates = Convert.ToInt32(args[1]);
int startX = Convert.ToInt32(args[2]);
int endX = Convert.ToInt32(args[3]);
double difference = (endX - startX + 1) / ordinates;
// ...
}
Run Code Online (Sandbox Code Playgroud)
它被传递args为:
args[0] = Pow(6,[x])
args[1] = 5
args[2] = 0
args[3] = 2
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,使用NCalc,所以Pow()函数得到了评估 - 工作正常.)
结果?difference = 0.
使用 …