标签: ncalc

使用NCalc在表达式中获取参数

我有一个表达式,我想解析,以获取所有使用的参数的列表.

例如:"X + 5 /(Y - 1)"应该给我以下结果:X,Y

我已经在我的项目中使用了NCalc; 那么可以使用NCalc来获取表达式中使用的参数吗?

根据这个讨论条目(https://ncalc.codeplex.com/discussions/361959),它是,但我不太明白答案.

c# string expression ncalc

8
推荐指数
1
解决办法
7612
查看次数

NCalc 指定类型

我们有一个使用 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 进行计算?

我曾尝试使用参数,这有效,但这意味着要对我们的代码进行重大重写才能实现,如果可能的话,我想避免它。

谢谢

c# ncalc

6
推荐指数
1
解决办法
2160
查看次数

NCalc:还有其他选择吗?

有没有人知道比NCalc更新的表达式评估器?最后一个版本是在2011年,一个(非常)快速的谷歌搜索几乎没有从我能看到的内容返回.

c# ncalc

5
推荐指数
2
解决办法
5267
查看次数

NCalc日期操作

我在一个项目中使用NCalc.有没有办法做日期操作,如

#16/02/2013# - #15/02/2013#= 1

我似乎无法产生结果.

Expression.Evaluate();
Run Code Online (Sandbox Code Playgroud)

对于上述表达式,结果为空.我可以比较两个日期,但有没有办法使用NCalc对它们进行操作?

c# ncalc

4
推荐指数
1
解决办法
2015
查看次数

如何向Ncalc添加新功能

我在我的新项目中使用Ncalc,它几乎已经拥有了我需要的一切.

我说几乎所有的东西,因为现在我需要扩展一些功能,并添加新的功能,例如:nth root,random等

你知道是否有人已经实现了这些功能吗?或者你可以给我任何提示或指南来扩展Ncalc的功能列表???

提前致谢.

c# expression-evaluation ncalc

2
推荐指数
1
解决办法
5771
查看次数

如何在 NCALC 的 IF 表达式中处理 null

我有一个复杂的 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。如果是这样,那么上面的表达式可能有什么问题。请帮忙!!

ncalc

1
推荐指数
1
解决办法
1670
查看次数

从什么时候3/5 = 0?

所以我有一个很好的复杂的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.

使用 …

c# math ncalc

-8
推荐指数
1
解决办法
270
查看次数

标签 统计

ncalc ×7

c# ×6

expression ×1

expression-evaluation ×1

math ×1

string ×1