我正在尝试在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,没有回答。有什么想法吗?
答案 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