Что является лучшим способом, чтобы сделать расчеты по значениям в строке, например: «(3,25 * 4)/1,25 + 10»Выполнение вычислений по значениям в строке «3 + 4»
ответ
Вам нужно написать синтаксический анализатор математической формулы. Если вы не хотите, чтобы написать свой собственные, проверить это один
Преобразования из инфикса в постфикс нотации является одним из способов решения этой проблемы, так как вы можете использовать стек для разбора и вычислить выражение.
Имеется десяток решений, доступных в Интернете. Вот one of them.
Вы видели http://ncalc.codeplex.com?
Он расширяемый, быстрый (например, имеет собственный кэш) позволяет вам предоставлять пользовательские функции и переменные во время выполнения, обрабатывая события EvaluateFunction/EvaluateParameter. Пример выражение можно разобрать:
Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
e.Parameters["Pi2"] = new Expression("Pi * Pi");
e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args)
{
if (name == "Pi")
args.Result = 3.14;
};
Debug.Assert(117.07 == e.Evaluate());
Он также обрабатывает типа изначально Юникод & много данных. Он поставляется с файлом antler, если вы хотите изменить грамматик. Существует также вилка, которая поддерживает MEF для загрузки новых функций.
Он также поддерживает логические операторы, строки даты/времени и операторы if.
Попробуем, спасибо! –
- 1. Выполнение вычислений по свойствам
- 2. Выполнение вычислений по сводным элементам
- 3. Выполнение Vlookup по повторяющимся значениям
- 4. Выполнение вычислений в запросе mysql
- 5. Выполнение вычислений по списку переменных в SASS
- 6. R Выполнение вычислений общего
- 7. Выполнение вычислений в sql
- 8. Выполнение вычислений по некоторым значениям в словаре на основе их ключей (Python)
- 9. Выполнение математических вычислений в SQLite, где статья
- 10. Список сортировки по 3 значениям
- 11. Выполнение вычислений по типам опций F #
- 12. Выполнение вычислений SQL
- 13. асинхронное выполнение макрокоманды по строке
- 14. Замена "?" в строке по значениям из массива
- 15. Выполнение простых вычислений с awk
- 16. Выполнение тяжелых вычислений в cellForRowAtIndexPath
- 17. Выполнение вычислений в наследовании classe
- 18. Выполнение взаимных вычислений в C++
- 19. Выполнение вычислений в списке R
- 20. Как выбрать столбцы по значениям в строке в R
- 21. Получить несколько идентификаторов по нескольким значениям в строке с sql?
- 22. Лучшая практика Java - выполнение больших математических вычислений на одной строке?
- 23. подмножество и выполнение вычислений по данным временных рядов, избегая циклов
- 24. Выполнение вычислений по кортежей в списке в Haskell
- 25. Выполнение условных вычислений с использованием данных, распределенных по нескольким записям
- 26. Adobe Flex ItemRenderer: Выполнение вычислений
- 27. Выполнение сценария Python по строке
- 28. Сортировка массива PHP по 3 значениям
- 29. flex 3 итерация по значениям объекта
- 30. Android: HashMap сортировать по 3 значениям
Это было показано на переполнении стека: http://stackoverflow.com/questions/1384811/code-golf-mathematics-expression-evaluator-full-pemdas (я изначально проголосовал за то, чтобы закрыть как обман другого вопроса, который был неправильным, и я не могу его изменить сейчас) –