Нет, вопрос не в том. Математически точный результат в случае _машиных_ вычислений будет 117559.37, поскольку на самом деле число то 117559.365. PHP вот отрабатывает примитивные ошибки машинной точности. А к примеру JavaScript - нет. И несмотря на то, что число 117559.365 - мы будем при округлении получать 117559.36, ибо JS округляет математическое число 117559.36499999998.
Как я понимаю, нужно 117559.36499999998 сначала как-то округлить, что бы устранить машинную ошибку, а потом уже делать свои округления. Вот в общем вопрос в алгоритме этого первого округления.