Почему и как ROUND_HALF_EVEN минимизирует накопленную ошибку при многократном применении в последовательности вычислений? - PullRequest
6 голосов
/ 27 апреля 2009

Мне сказали, что ROUND_HALF_EVEN является предпочтительным режимом округления для расчетов финансовых данных. Мне любопытно узнать, почему и как этот режим округления уменьшит накопленную ошибку, как указано в javadoc BigDecimal 1.4.2. Спасибо, Декан

Ответы [ 3 ]

9 голосов
/ 27 апреля 2009

Из Википедия :

Несмотря на обычай округления № 4,5 до 5, на самом деле 4,5 нет ближе к 5, чем к 4 (это 0,5 подальше от обоих). Когда имеешь дело с большие наборы научных или статистические данные, где тенденции важное, традиционное округление на среднее смещение данных вверх немного. За большой набор данных, или когда много последующих округлений операции выполняются как в цифровом обработка сигналов, округление к четному Правило стремится уменьшить общее ошибка округления, с (в среднем) равная часть чисел округляется как округление вниз. Это вообще уменьшает искажение результата вверх.

1 голос
/ 27 апреля 2009

У меня такое же впечатление, как и у двух других ответов, а именно, что округление до половины даже при применении к случайному числу одинаково вероятно округлить в большую или меньшую сторону, так что для больших наборов данных нет ожидаемого смещения из-за округления. Но, насколько я знаю, нет ничего особенного в самом круглом, даже в самом себе; Я думаю, что раунд-половина-нечетность (округление n до ближайшего нечетного целого числа) будет иметь то же свойство. То же самое с политикой случайного округления, то есть n.5 округляется в большую или меньшую сторону с вероятностью 50%.

1 голос
/ 27 апреля 2009

Просто чтобы уточнить, «округлить до половины четным» округляет .5, если нечетная часть числа нечетная, и округляет ее, если не десятичная часть нечетная & mdash; к номеру ближайшего события.

То есть 4,5 -> 4, 5,5 -> 6, 6,5 -> 6 и т. Д.

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

...