Почему и как ROUND_HALF_EVEN минимизирует кумулятивную ошибку при повторном применении по последовательности вычислений?

Я думаю, что что-то не так с версиями библиотек, которые вы используете. Трудно сказать без подробностей, но, если я угадаю, вы используете неправильную версию Hibernate ORM / OGM для той версии Spring, которая у вас есть в проекте.

Имейте в виду, что Hibernate OGM использует ORM, и добавленная в проект версия может оказаться не той, которую вы ожидаете.

ОБНОВЛЕНИЕ

Spring 4.3.2.RELEASE совместим с Hibernate ORM 5.2.1.Final (на основе этой страницы репозитория maven ) Hibernate OGM 5.4. 1.Final использует Hibernate ORM 5.3.6.Final Страница Hibernate OGM имеет страницу матрицы совместимости

Вам необходимо соответствующим образом настроить зависимости в файле pom.xml. Я думаю, что эти изменения будут работать с Spring 4.3.2 (я не пробовал их):

  • Версия Spring: 4.3.2.RELEASE
  • Версия OGM: 5.3.1. Final
  • Удаление зависимости Hibernate ORM (OGM и Spring уже включают ее в качестве транзитивной зависимости)
  • Удаление зависимости mongo-java-driver (это уже транзитивная зависимость OGM)

7
задан 27 April 2009 в 04:25
поделиться

3 ответа

From Wikipedia:

Despite the custom of rounding the number 4.5 up to 5, in fact 4.5 is no nearer to 5 than it is to 4 (it is 0.5 away from both). When dealing with large sets of scientific or statistical data, where trends are important, traditional rounding on average biases the data upwards slightly. Over a large set of data, or when many subsequent rounding operations are performed as in digital signal processing, the round-to-even rule tends to reduce the total rounding error, with (on average) an equal portion of numbers rounding up as rounding down. This generally уменьшает искажение результата вверх.

11
ответ дан 6 December 2019 в 14:09
поделиться

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

2
ответ дан 6 December 2019 в 14:09
поделиться

Just to clarify, "round half even" rounds .5 up if the non-decimal part of the number is odd, and rounds it down if the non-decimal part is odd — i.e., to the nearest event number.

So 4.5 -> 4, 5.5 -> 6, 6.5 -> 6, etc.

For a truly random set of decimal numbers, this type of rounding will not skew the totals up or down significantly. So it is favoured as a "fair" rounding system in financial applications.

2
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: