C# 操作员'/';can';不能应用于类型为';十进制';和';双倍';-NCalc
我试图在NCalc中运行此公式:C# 操作员'/';can';不能应用于类型为';十进制';和';双倍';-NCalc,c#,.net,exception-handling,casting,ncalc,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]参数以小数形式传递。我试着在2和100上加上“m”,就像这样: "( Abs([a] - [b]) / ( ([a] + [b]) / 2m ) ) * 100m" 但它抛出了一
"( Abs([a] - [b]) / ( ([a] + [b]) / 2.0 ) ) * 100"
我得到一个错误:
Operator '/' can't be applied to operands of types 'decimal' and 'double'
[a]和[b]参数以小数形式传递。我试着在2和100上加上“m”,就像这样:
"( Abs([a] - [b]) / ( ([a] + [b]) / 2m ) ) * 100m"
但它抛出了一个例外:
Additional information: extraneous input 'm' expecting ')' at line 1:36
我跟着,但这对我没有帮助。同样的问题贴在网上,没有回答。有什么想法吗?可能的解决方法是将
2m
作为参数传递,使其正确识别为十进制值,例如:
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
string strExp=“(Abs([a]-[b])/([a]+[b])/[c])*100”;
表达式e=新表达式(strExp);
e、 参数[“a”]=3.5m;
e、 参数[“b”]=1m;
e、 参数[“c”]=2m//@HenkHolterman不确定,但我认为C#是可以接受的,因为OP后面的一个问题是关于普通C#的,而不是NCalc:“我跟着这个问题……”。和2m
为我编译并生成了一个结果(但没有检查计算结果是否正确)