Что такое хорошая библиотека для анализа математических выражений в java?
Я разработчик Android и как часть моего следующего приложения мне нужно будет оценить большое количество пользовательских математических выражений и уравнений. Я ищу хорошую библиотеку java, которая легка и может оценивать математические выражения с использованием пользовательских переменных и констант, триггерных и экспоненциальных функций и т. Д.
Я огляделся, и Jep, похоже, был популярен, но мне хотелось бы услышать больше предложений, особенно от людей, которые раньше использовали эти библиотеки.
- java, расширяющий class с конструктором основного classа имеет параметр
- Создать новый class из переменной в Java
- Возвращаемое значение из Thread
- ArrayList не обновляется внутри функции onChildAdded
- Невозможно получить информацию о подписке из API разработчика Google Play для Android
- Событие масштабирования для карт google на Android
- Что такое IndexOutOfBoundsException? Как я могу это исправить?
- Java не поддерживает множественное наследование, но неявно каждый class в java расширяет Object и позволяет еще один
- Как вызвать веб-службу SOAP на Android
- Строка Android Split
- BroadcastReceiver Vs WakefulBroadcastReceiver
- Ошибка приложения при попытке использовать RecyclerView на Android 5.0
- В чем причина UnsupportedClassVersionError?
JEval – хорошая альтернатива. Я отказался от Jep из-за того, что он стал коммерческим. Единственное беспокойство заключается в том, что JEval, кажется, немного спящий на данный момент (последний релиз в 2008 году).
Я написал простой, но способный Math Expression Evaluator некоторое время назад, что является бесплатным и открытым исходным кодом. Главное преимущество – быть быстрым и крошечным – оба хороши с ручными устройствами. Если это соответствует вашим потребностям, вы можете его использовать.
Основные характеристики:
- Основные математические операторы с предполагаемым приоритетом (^ * × · / ÷% + -).
- Явный приоритет с круглыми скобками.
- Неявное умножение заключенных в скобки подвыражений.
- Правильная правая ассоциативность экспонент (оператор мощности).
- Прямая поддержка шестнадцатеричных чисел с префиксом 0x.
- Константы и переменные.
- Расширяемые операторы.
- Расширяемые функции.
- 20 KiB.
пример
MathEval math=new MathEval(); math.setVariable("Top", 5); math.setVariable("Left", 20); math.setVariable("Bottom",15); math.setVariable("Right", 60); System.out.println("Middle: "+math.evaluate("floor((Right+1-Left)/2)"));
Попробуйте https://code.google.com/p/expressionoasis/ . Это расширяемая система оценки выражений и будет отвечать таким требованиям.
Это не совсем соответствует моим начальным условиям, но я нашел замечательный парсер, написанный на C ++. Я пытаюсь выяснить поддержку собственного кода Android, чтобы узнать, могу ли я его использовать. Это именно то, что мне нужно.
Вот документация для проекта.
http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx
Существует новый коммерческий инструмент под названием formula4j , который может представлять интерес для некоторых.