Можете подсказать, если ли математическая библиотека выполнения произвольной арифметической функции с учётом деления на 0. Например, есть у меня строка, которая путём некоторого преобразования превращается в арифметическое выражение
"1 + 2 / 0"
Выполнение с помощью функции eval() данного выражения даст ошибку "Division by zero". Но мне нужно, чтобы такие участки "2 / 0" определялись и давали значение 0.
Это важно, т.к. у меня есть несколько сотен таких строк, которые генерируются на лету. Ручной разбор таких строк для ручного перехвата таких мест я не смог написать - очень сложно.
Почему это так происходит: В системе руками создаются различные правила вычисления некоторых параметров, например, "1 - $a / $b", где переменные $a и $b подставляются из текущих данных, вносимых извне. Причём эти значения могут быть любыми, в том числе и нулём. И 0 - это нормальное валидное значение
Более подробный пример:
($a + $b / $c) / $d + $e * $f
Значения в переменные подставляются любые - от 0 до бесконечности (почти). В этом случае, если значения $c и/или $d равны 0, вся функция выдаст NAN (php 7.1), а мне надо чтобы оно заменяла проблемные участки кода и выдало результат выражения
0 + $e * $f
Есть ли библиотеки, которые могут обойти корректно эту ошибку? Пробовал следующие библиотеки:
- rodriados/mathr
- mossadal/math-parser
- fintara/calculator-php
Все они не подходят