Ответ jedbez в «Оператор ЭВМ»10
Об округлении и важности постановки правильного т.з..
Рассказал мой препод в университете - в 90х.
Дальше с его слов:
Нанялась одна контора писать банковский софт. Выяснили, что банку нужно, согласовали т.з. Во время согласования возник важный вопрос а какая точность расчётов необходима? Банковские сотрудики посовещались и назвали столько-то знаков после запятой.
// Тоочное число не помню, врать не буду,. Надо так же понимать, что компьютеры тогда были послабее, размеры в байтах всяких float и double были скромнее, и собственно штатные возможности для точной записи чисел были ощутимо хуже, чем сейчас. Поэтому сверхвысокое количество знаков после запятой было ещё и труднореализуемой задачей
Итак - подписали договор, контора взялась за разработку и долго ли коротко ли, но выкатила готовый софт. Банк остался доволен, заплатил по договору и на этом история могла бы закончится.
Но через какое-то время внутренний аудит и безопасники в банке выявили не поддающиеся объяснению регулярные переводы денег на счёт той конторы. Стали копать - что к чему - и выяснили:
Контора реализовала гораздо более точные вычисления, чем требовалось по т.з. Затем их софт суммировал "неучтённые доли копеек", которые шли после обговоренном в т.з. знаке после запятой, и складывали это в своего рода буфер. Когда в буфере накапливалась довольно значимая сумма - их же софт осуществлял перевод этой суммы на их счёт.
С точки зрения отдельных операций - всё было согласно т.з. (и клиенты банка не имели претензий). Но при огромном потоке банковских операций - довольно быстро копилась "неучтёнка", которую контора спокйно и получала.
Банк попробовал наехать на контору, но софт соответствовал условиям т.з., и у банка ничего не получилось (кроме того, чтобы прекратить будущие такие переводы)
Гарри Гаррисон "Стальная крыса". Издана в 1961 году