При разработке счета-фактуры я столкнулся с проблемами математического округления, когда мои цены за единицу и итоговые суммы не совпадают идеально. Проблема возникает из-за бизнес-требований, когда скрытая комиссия передается клиенту на определенных условиях. Я должен заглянуть за кулисы и умножить каждую цену и сумму на процент комиссии.
Например, неокругленная расчетная цена, умноженная на комиссию.
Item Name qty Price2 qty2 Price Total
Kitchen Counter Uba Tuba 100.0 72.4275 100.0 18.125 9055.249999999999 9055.249999999999
Vanity Uba Tuba 100.0 72.4275 100.0 18.125 9055.249999999999 9055.249999999999
Grand Total 18110.5
Теперь, используя хелпер rails number_to_currency, числа выключены
Kitchen Counter Uba Tuba 100.0 $72.43 100.0 $18.13 1 $9,055.25 $9,055.25
Vanity Uba Tuba 100.0 $72.43 100.0 $18.13 1 $9,055.25 $9,055.25
Из-за округления цен, если клиент делает свои собственные расчеты, итоги не учитываются.
rounded total = $9056.00
Как вы решаете это программно?
Integer
, либо числа с произвольной точностью (BigDecimal
) для представления значений. Проблемы с округлением может быть трудно отследить, и вы также не хотите иметь дело с неточностью обычных чисел с плавающей запятой! 25.02.2014