Случился спонтанный ликбез по поводу float-ов в биллинге:
http://amarao-san.livejournal.com/2944300.html То, что программисты через одного не понимают, что такое плавающая точка и какой физический смысл расчетов в ней, это вымораживает конечно каждый раз.
Comments 39
Reply
В самом крайнем случае, эти непрограммисты придут к программисту и объяснят, что копеек дробных не бывает, а то, что они тебе в алгоритмах расчета реальных вещей мерещатся, это аберрации сознания и неправда.
Reply
У абонента на счету 0.
Тариф стоит 100 рублей в месяц
Списание - посуточное.
В данном месяце - 30 дней.
Мы списываем с абонента по 3.(3) рубля в день.
Что мы показываем в биллинге абоненту? По сколько в день мы с него списываем?
По скольку должен класть денег абонент в день, что-бы через 30 дней у него на счету было 100 рублей?
Reply
Округлять её индивидуальные посуточные компоненты нельзя. Округлять её целиком - вообще не надо.
Округлять её при частичных закрытиях периода надо, и это приводит к нормальным правильным результатам, максимально возможно близким в таких условиях к тому, что есть.
Reply
Стоимость услуги - 124 рубля _в месяц_. Списание - _посуточное_.
4 декабря у абонента на счету остался 1 рубль и он положил себе на счёт 124 рубля. Отметил у себя в телефоне, что 4 января надо заплатить.
4 января пришёл и заплатил 124 рубля.
4 февраля он придёт и устроит истерику, какого хера мы отключили ему интернет.
Отсюда мораль - если сказано что тариф 100 рублей в месяц - значит и списывай помесячно. И не будет проблем как 100 на 31 поделить.
Reply
Reply
А второй-то как?
Reply
Reply
Reply
PS Использовать 4 цифры вместо 2 цифр требуется для учета полукопейки.
Reply
Leave a comment