Странный у Вас метод решения задачи.
Неужто не видите, что у второго способа будут подобные ошибки.
В том же примере, для двух товаров сумма в 997.10 округляется обоими способами до 997.
Каким бы способом не округлять цену одного товара, будет то же самое несоответствие.