0

我试图在 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

我关注了这个问题,但它对我没有帮助。在codeplex上发布的相同问题没有答案。有任何想法吗?

4

1 回答 1

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
于 2014-10-04T08:47:09.727 回答