parser - ¿Qué es una buena biblioteca para analizar expresiones matemáticas en java?
math parser dll (5)
Soy un desarrollador de Android y como parte de mi próxima aplicación, tendré que evaluar una gran variedad de ecuaciones y expresiones matemáticas creadas por el usuario. Estoy buscando una buena biblioteca de Java que sea liviana y pueda evaluar expresiones matemáticas usando variables definidas por el usuario y constantes, funciones trigonométricas y exponenciales, etc.
He mirado alrededor y Jep parece ser popular, pero me gustaría escuchar más sugerencias, especialmente de personas que han usado estas bibliotecas anteriormente.
Esto no se ajusta exactamente a mis condiciones iniciales, pero encontré un maravilloso analizador escrito en C ++. Estoy intentando descubrir el soporte de código nativo de Android para ver si puedo usarlo. Es exactamente lo que necesito.
Aquí está la documentación para el proyecto.
http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx
Hace un tiempo escribí un Evaluador de expresiones matemáticas simple pero capaz, que es gratuito y de código abierto. Su principal ventaja es ser rápido y pequeño: ambos son buenos con los dispositivos manuales. Si satisface su necesidad, puede usarlo.
Características principales:
- Operadores matemáticos básicos, con precedencia inferida (^ * × · / ÷% + -).
- Precedencia explícita con paréntesis.
- Multiplicación implícita de subexpresiones entre corchetes.
- Corrija la asociatividad a la derecha de exponenciales (operador de potencia).
- Soporte directo para números hexadecimales con el prefijo 0x.
- Constantes y variables
- Operadores extensibles
- Funciones extensibles.
- 20 KiB de huella.
Ejemplo
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)"));
Hay una nueva herramienta comercial llamada formula4j , que puede ser de interés para algunos.
Pruebe https://code.google.com/p/expressionoasis/ . Es un marco extensible de evaluación de expresiones y cumplirá dichos requisitos.
JEval es una buena alternativa. Abandoné Jep debido a que se volvió comercial. La única preocupación es que JEval parece estar un poco dormido en este momento (último lanzamiento en 2008).