У меня есть три поля в таблице счетов:
subtotal decimal(12,4)
tax_amount decimal(12,4)
total decimal(12,4)
Я столкнулся с проблемой с округлением. Таким образом, есть счет со следующими значениями. Добавление складывается, но при отображении данных счета-фактуры и создании PDF-файла для счета-фактуры отображаемые данные не всегда складываются.
stored value displayed (rounded)
value
subtotal 165.1610 165.16
tax_amount 24.7742 24.77
total 189.9352 189.94
Сохраненные значения складываются. total
столбец рассчитывается путем сложения subtotal
а также tax_amount
значения в PHP. Округление было сделано правильно, но 165,16 + 24,77 = 189,93 и НЕ 189,94.
Как я могу справиться с этими ситуациями? Это не всегда так.
Округлите сохраненные значения с точностью до копейки. Когда вы рассчитываете сумму или промежуточный итог с использованием PHP, суммируйте закругленный ценности.
Если вы собираетесь отображать округленные агрегаты определенным образом, вероятно, лучше всего рассчитывать их точно так же, чтобы избежать путаницы.
Вы мог отображать агрегированные элементы как не округленные, а затем округлять итоговую сумму для отображения. Это может сыграть лучше в долгосрочной перспективе, если вы храните дробные пенни в базе данных.
Другой вариант может заключаться в том, что на счете-фактуре взимается плата за округление для учета расхождений, хотя это может сбить некоторых с толку.
При этом, говоря программно, лучше по возможности избегать дробных копеек.
Что бы вы ни выбрали, будьте последовательны!
Других решений пока нет …