metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2006-07-18 06:43 pm

О округлениях и изобретении велосипедов

Вот все адепты правильного стиля программирования, в том числе, в последнее время и я сам убеждают всех и самих себя, что не надо программить то, что уже есть в стандартных библиотеках, кем-то реализовано, итд.

А вот теперь читаем статью "Загадки округления" и обнаруживаем, что в борландовской реализации функции Round, коими бухгалтерские проги просто набиты под завязку, живут ЧЕРВИ, благодаря которым эта функция округляет чорт знает в какую сторону.

И если бы я лет 10 назад не сделал собственную реализацию этой функции для денежного типа - мне бы бухгалтера давным давно отрубили голову.

А вообще я округления ненавижу. Потому что от меня раз в месяц стабильно требуют чтобы сумма округленных чисел всегда равнялась округленной сумме чисел. И каждый раз приходится объяснять почему это невозможно. И уже третий месяц не доберусь до организации совещания, где вопрос "на каком уровне округлять" будет решен раз и навсегда волевым командирским решением высшего начальства и доведен до исполнителей.

[identity profile] kkirsanov.livejournal.com 2006-07-18 04:19 pm (UTC)(link)
Длинная арифметика(для критичных мест) не катит?

[identity profile] metaclass.livejournal.com 2006-07-18 04:46 pm (UTC)(link)
Не поможет. Проблема не в потере точности при вычислениях, а в ее потере в мозгу бухгалтера, смотрящего на итоговый документ.

[identity profile] ex-zorgg254.livejournal.com 2006-07-18 04:19 pm (UTC)(link)
У тебя на юзерпике случайно не battle programmer как-его-там?

[identity profile] metaclass.livejournal.com 2006-07-18 04:45 pm (UTC)(link)
Он самый, ага.

[identity profile] ex-zorgg254.livejournal.com 2006-07-18 04:47 pm (UTC)(link)
Ха, а я маялся, кого мне эта физия напоминает. Думал, может кто из знакомых =)

[identity profile] eu3eu.livejournal.com 2006-07-18 09:38 pm (UTC)(link)
"Бухгалтерский" метод округления, кстати, чем-то напоминает применяемый при цифровой обработке аналоговых сигналов уму непостижимый способ уменьшения шума дискретизации путем добавления шума(!) в сигнал.

[identity profile] eu3eu.livejournal.com 2006-07-18 09:48 pm (UTC)(link)
Экономический эффект от решения проблемы округлений никогда не окупит затрат, понесенных на это решение. Поэтому на совещании стОит поднять вопрос о принятии на высшем уровне закона, по которому все округления производятся "вниз", а остатки от деления на ноль от округления до копеек должны перечисляться в специательный фонд президента. Проценты с полученного таким образом капитала пойдут на выплату пенсии главе государства, когда он наконец-то уйдет на покой. Ради приближения этого события все трудящиеся страны с удвоенным рвением ринутся наполнять фонд. Нашу экономику ожидает небывалый подъём! ;)

[identity profile] sbj-ss.livejournal.com 2006-07-19 09:08 am (UTC)(link)
В досовские времена, помнится, взяли в Германии одного банковского программиста. У него эти остатки округления переводились на его счёт :)

[identity profile] 1ceheart.livejournal.com 2006-07-19 08:10 am (UTC)(link)
> Вот все адепты правильного стиля программирования, в том числе, в последнее время и я сам убеждают всех и самих себя, что не надо программить то, что уже есть в стандартных библиотеках, кем-то реализовано, итд.

+1

Я тоже злюсь, но это бесполезно. А потом мы таскаем за собой всякие десятимегабатные наборы чужих глюков :(