运营商' /'不能应用于类型'十进制'的操作数。和' double' - NCalc

时间:2014-10-04 08:29:36

标签: c# .net exception-handling casting ncalc

我正在尝试在NCalc中运行此公式:

"( Abs([a] - [b]) / ( ([a] + [b]) / 2.0 ) ) * 100"

我收到错误:

Operator '/' can't be applied to operands of types 'decimal' and 'double'

[a]和[b]参数以小数形式传递。我试着将'm'放在2和100上,如下所示:

"( Abs([a] - [b]) / ( ([a] + [b]) / 2m ) ) * 100m"

但它引发了一个例外:

Additional information: extraneous input 'm' expecting ')' at line 1:36

我跟着this question,但它没有帮助我。同样的问题发布在codeplex,没有回答。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

可能的解决方法是将2m作为参数传递,以使其正确识别为decimal值,例如:

string strExp = "( Abs([a] - [b]) / ( ([a] + [b]) / [c] ) ) * 100";
Expression e = new Expression(strExp);

e.Parameters["a"] = 3.5m;
e.Parameters["b"] = 1m;
e.Parameters["c"] = 2m;   //<- pass 2m as expression parameter