всегда работал и все до копейки было в норме
Как-то работал в компании, которая делает хранилища данных и консалтинг, в том числе для банков, типа втб24. Так вот у них в бд (да, там оракл, терадата и тд) валюту хранили в ISO коде, а значение - в DECIMAL(19,4). Проблема как раз в php: в самом языке нет поддержки операций над числами с фиксированной точностью. А MySQL PDO драйвер преобразует DECIMAL в строку, и изменить это поведение нельзя. Я нашёл пакет php-decimal/php-decimal (также надо ставить расширение для php). И написал свой кастомный cast класс, который из строки конструирует Decimal объект, а при "отправке" в бд преобразует в строку. При этом, как заявлено на сайье с доками, операции над этим Decimal быстрее, чем bcmath.