2014-10-04 1 views
0

Я пытаюсь запустить эту формулу в NCalc:оператора «/» не может быть применен к операндам «десятичной» Типы и «двойной» - NCalc

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

Я получаю ошибку:

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

Параметры [a] и [b] передаются как Decimals. Я пытался ставить 'M' на 2 и 100, как так:

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

Но он бросает исключение:

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

Я последовал this question, но это не помогло мне. Тот же вопрос размещен на codeplex без ответа. Есть идеи?

ответ

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 
+0

@HenkHolterman Не уверен, но я думал, что C# является приемлемым, поскольку один вопрос О.П. последовал обо равнину C#, а не NCalc: «Я следовал этому вопросу ...». И '2m' скомпилировал и произвел для меня результат (не проверял, правильно ли результат вычисления) – har07