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

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

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

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

4 ответов


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

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

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


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

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

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

Это позволит избежать систематической ошибки при расчетах.

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

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

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


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


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

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