Почему.NET использует округление банкира в качестве значения по умолчанию?

264
задан casperOne 30 May 2011 в 13:02
поделиться

3 ответа

Вероятно, потому что это - лучший алгоритм. В течение многих выполненных округлений Вы составите в среднем, который весь.5 заканчивает тем, что округлил одинаково вверх и вниз. Это дает лучшие оценки фактических результатов, если Вы, например, добавляя набор округленных чисел. Я сказал бы, что даже при том, что это не то, что некоторые могут ожидать, это - вероятно, более корректная вещь сделать.

191
ответ дан Kibbee 23 November 2019 в 02:28
поделиться

В то время как я не могу ответить на вопрос, "Почему разработчики Microsoft выбирали это в качестве значения по умолчанию?", я просто хочу указать, что дополнительная функция является ненужной.

Math.Round позволяет Вам определять MidpointRounding :

  • ToEven - Когда число является промежуточным между двумя другими, оно округлено к самому близкому четному числу.
  • AwayFromZero - Когда число является промежуточным между двумя другими, оно округлено к самому близкому числу, которое вдали от нуля.
86
ответ дан casperOne 23 November 2019 в 02:28
поделиться

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

В основном банкирам нужны десятичный тип; следовательно "Банковское округление"

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

  • округлите набор "строк счета-фактуры" до сложения их,
  • или сложите их, а затем округлите общую сумму

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

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

.
23
ответ дан 23 November 2019 в 02:28
поделиться
Другие вопросы по тегам:

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