Guarda che li ho provati subito sia bc che gmp, ma il risultato è lo stesso.

Ora però mi sono accorto di una cosa, probabilmente non è il calcolo ad essere sbagliato, ma la formattazione.

Potrebbe essere number_format() che a volte l'approssimazione del 5 finale la fà in eccesso e a volte in difetto?