2015-12-11 3 views
0

У меня есть строка с значениями, хранящимися в:Как преобразовать формулу, сохраненную в строке, в двойную?

string formula = "(10.5+10.5)/(2*5)"; 

double a=convert.ToDouble((10.5+10.5)/(2*5)) работает нормально, но мне нужно, чтобы решить, как двойной a=convert.ToDouble(formula). Является ли это возможным? Я использую строку ввода ошибки ввода не в правильном формате.

+3

Этот SO вопрос уже ответил на этот http://stackoverflow.com/questions/333737/c-sharp-evaluating-string-342- выход-INT-18 –

ответ

1

Вы не можете просто передать формулу Convert.ToDouble и ожидать, что она рассчитает ее. Вы должны вычислить формулу.

Хороший способ - реализовать парсер, который будет строить дерево выражений и вычислять значение.

Другой Hacky решение состоит в использовании метода ComputeDataTable:

System.Data.DataTable table = new System.Data.DataTable(); 
decimal result = (decimal)table.Compute(formula); 

Обратите внимание, что он возвращает объект decimal. Теперь вы можете использовать Convert, чтобы сделать его double, если вам нужно:

double resultDouble = Convert.ToDouble(result);