Вам нужно убедиться, что вычисляемая вами строка взята из надежного источника, и соблюдать обычные меры предосторожности, но в остальном все сработает сразу.
Если вы хотите использовать более сложный (но безопасный) подход, вы могли бы использовать ANTLR (который, я подозреваю, имеет математическую грамматику в качестве отправной точки) и фактически скомпилировать / интерпретировать инструкцию самостоятельно.
Действительно , вы должны знать , что результат выполнения следующей инструкции в javascript :
eval('var aa=5+4*(7-15)') aa // -27
Возможно, есть способ получше, но этот работает.
Ответ 4
Недавно я использовал очень зрелую библиотеку синтаксического анализа математических выражений с открытым исходным кодом, предоставляющую тот же API для JAVA и .NET. Название библиотеки - mXparser . mXparser предоставляет базовые функциональные возможности (анализ простых формул и вычисления) и более продвинутые (т. е. Определяемые пользователем аргументы, функции). Дополнительно стоит отметить, что mXparser имеет богатую встроенную математическую коллекцию (имеется в виду операторы, унарные / двоичные / переменные функции, повторяющиеся операторы, такие как суммирование и произведение).
Найдено недавно - в случае, если вы хотите попробовать синтаксис (и увидеть расширенный вариант использования), вы можете загрузить Скалярный калькуляторприложение, которое работает на mXparser.