Делаем расчет по BODMAS на C#

Ребята, у меня есть расчет, который строит пользователь в текстовом поле. Короче говоря, он определяет желаемый формат, а значения передаются позже (после некоторых запросов к базе данных).

eg. (X + Y) * 55

или он может также строить как

(X - 100) * 100

Есть ли способ вычислить это с помощью С#?

ПРИМЕЧАНИЕ. X и Y извлекаются из базы данных.


person Anoushka Seechurn    schedule 26.11.2013    source источник
comment
Вы когда-нибудь создавали анализатор строк/скриптов?   -  person rhughes    schedule 26.11.2013
comment
@rhughes, нет, не видел.   -  person Anoushka Seechurn    schedule 26.11.2013
comment
В основном это повлечет за собой создание небольшого парсера сценариев. В зависимости от вашего времени вы можете либо изучить готовый, такой как Lua, либо создать свой собственный. Как ваше время?   -  person rhughes    schedule 26.11.2013
comment
У меня на это 26 часов.   -  person Anoushka Seechurn    schedule 26.11.2013
comment
возможный дубликат вычисления математического выражения в c#   -  person Rowland Shaw    schedule 26.11.2013
comment
Но у дубликата нет принятого ответа.   -  person M-WaJeEh    schedule 26.11.2013


Ответы (2)


взгляните на http://NCalc.Codeplex.com

это простой в использовании и расширяемый механизм вычислений для C #

Пример использования:

 Expression e = new Expression("2 + 3 * 5");
  Debug.Assert(17 == e.Evaluate());
person GreyCloud    schedule 26.11.2013
comment
Утверждение используется для проверки (если я не ошибаюсь), является ли оценка истинной или ложной. Мне это не нужно, мне нужен способ фактически оценить выражение. - person Anoushka Seechurn; 26.11.2013
comment
конечно, поэтому просто вызовите string results = e.Evaluate().ToString() - person GreyCloud; 26.11.2013
comment
или если вам нужен двойной результат, используйте double = Convert.ToDouble(e.Evaluate()); - person GreyCloud; 26.11.2013

Не делая этого за вас, вы можете посмотреть здесь для получения информации об использовании Lua в C#.

В качестве другого способа вы можете создать систему, подобную этой, которая создает реальный калькулятор. Вы можете расширить его, добавив кнопки ( и ) для их вычисления в первую очередь.

person rhughes    schedule 26.11.2013