Подтвердить что ты не робот

Стандарты округления - финансовые расчеты

Мне любопытно существование каких-либо "округлых" стандартов ", когда дело доходит до расчета финансовых данных. Мои первоначальные мысли состоят в том, чтобы выполнять округление только тогда, когда данные предоставляются пользователю (уровень представления).

Если для дальнейших вычислений используются "округленные" данные, следует использовать "округлую" фигуру или "сырую" цифру? Есть ли у кого-нибудь совет?

Обратите внимание, что я знаю о различных методах округления, т.е. округлении банкиров и т.д.

4b9b3361

Ответ 1

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

Когда нужно выполнить точное округление, могут быть предусмотрены правила, такие как преобразование между

Ответ 2

Я просто попросил программиста-мейнфрейма greybeard в финансовой компании, в которую я работаю, и сказал, что нет известного стандарта, и это касается практики программистов.

В то время как статистикам известно о проблеме округления с по крайней мере 1906 года, трудно найти финансовый стандарт, одобряющий его.

В соответствии с это сидит, "Отчет Европейской комиссии Введение евро и округление валютных сумм предполагает, что ранее не было стандартного подхода к округлению банковского дела ".

В общем, используйте симметричный режим округления независимо от того, в какой базе вы работаете (base-2 или base-10).

Это позволит избежать систематического смещения во время вычислений.

Такой режим - круглый-полу-четный, иначе известный как "округление банкиров".

Используйте языковые инструменты, которые позволяют указывать числовую контекстную экспликацию, включая режимы округления и усечения. Например, модуль Python decimal. Неявные предположения, сделанные библиотекой C, могут оказаться непригодными для ваших вычислений.

http://en.wikipedia.org/wiki/Rounding#Rounding_to_integer

Ответ 3

Я не видел существования "одного стандарта, чтобы управлять ими всех" - существует любое количество правил округления (как вы указали), и они, похоже, вступают в игру на основе кода отрасли/клиента и валюты (http://en.wikipedia.org/wiki/ISO_4217) - так как не все используют 2 места после десятичной, проблема становится еще более сложной. В конце дня ваш клиент должен указать правила, которые они хотят реализовать...

Ответ 4

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

Хотя базовая ставка заработной платы может быть указана только в двух десятичных разрядах ("Вы наняты по 22,71 долл. США в час"), такие вещи, как смешанное сверхурочное время (определяемое путем усреднения нескольких ставок за период), в итоге приводят к эффективной почасовой ставке $ 23.37183475/ч.

Как вы платите за это сверхурочно?

15 hours x 23.37183475 x 1.5 = $525.87 rounded from $525.86628187
15 hours x 23.37       x 1.5 = $525.82

ПОЧЕМУ ВЫ украли у моего клиента пять центов? К сожалению, я не шучу об этом.

Это становится еще более неудобным, когда вы рассчитываете при значении полной точности, но отображаете усеченную версию: вы делаете первый расчет выше, но отображаете только 23,37 долл. США для ставки на платежном квитанции.

Теперь расчеты окупаемости не связаны с копейкой, и теперь вы должны объяснить это, но даже если это в пользу работника, может быть достаточно, чтобы адвокат по труду почувствовал запах крови в воде и начал искать других. вещи.

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

Ответ 5

Рассмотрим использование масштабированных целых чисел.

Другими словами, храните целые числа пенни вместо дробных чисел долларов.