
Комментарии 11
Почему не хранить сумму в long?
И оперировать копейками - 1 руб. 10 копеек, будем перечислять 110.
Или BigDecimal
PS не совсем понял про скрины из налоговой и float. Почему вы решили, что там используется float ?
Да, целочисленное хранение денежных единиц распространено в банках, например в платежных API. PS Ну, конечно, я точно не знаю.. но 1) не могу представить как можно недоплатить 3 копейки 2) как-то же у них получились -3 копейки в расчетах? 3) Могла ли получиться такая погрешность без float?
оперировать копейками
Как только будет надо сосчитать какие то проценты - так и появятся погрешности округления копеек.
Потому что, многим людям, чисто морально, тяжко дается даже просто признать факт существования самого вопроса "а вдруг ошибка была на нашей стороне? ".
Вообще нельзя float для финансов использовать. Никогда
Для денег специальные типы придуманы в компьютерах, чтобы эта погрешность не копилась. Ведение бухгалтерии - это отдельное искусство. Если работаете с деньгами, лучше заранее изучить.
А системы, которые используют числа с плавающей точкой для финансов мне встречались. Одно время провайдер использовал такую и людей массово отключали за неуплату, потому что к началу месяца у них на счёте числился долг в 0,01 копейки. Просто абонентская плата списывалась каждый день. И в один прекрасный момент вылезает погрешность из-за того, что сумма делится на число дней. Лечилось там просто установкой порога отключения в 1 рубль (с запасом). А потом, благо, эту систему сменили.
P.S. Систему звали Bill-Master.
Вычисление/сравнение float и налоговая