2016-07-23 3 views
1

Я пытаюсь использовать nCalc в своем приложении, но я сталкиваюсь с проблемами с ним, которые хотят конвертировать в UInt16 по любой причине и вызывать ошибку.Остановить nCalc с помощью ToUInt16()?

string evalstring = "-.503937^2"; 
Expression e = new Expression(evalstring); 

this.Value = Convert.ToDouble(e.Evaluate()); 

Это броски;

System.OverflowException occurred 
    HResult=-2146233066 
    Message=Value was either too large or too small for a UInt16. 
    Source=mscorlib 
    StackTrace: 
     at System.Convert.ToUInt16(Int32 value) 
    InnerException: 

ответ

1

В выражении NCalc, ^ является побитовое исключающее ИЛИ оператор, который принимает два беззнаковых 16-разрядное целое число операндов. В вашем выражении NCalc пытается преобразовать -.503937 в значение UInt16, а OverflowException выбрано потому, что число меньше нуля.

Если вы хотите возведение в степень, используйте Pow функцию вместо:

string evalstring = "Pow(-.503937, 2)"; 

 Смежные вопросы

  • Нет связанных вопросов^_^