Я не вижу результата, ожидаемого с помощью Math.Round.Округление до C#
return Math.Round(99.96535789, 2, MidpointRounding.ToEven); // returning 99.97
Как я понимаю MidpointRounding.ToEven, 5 в положении тысячных должно вызывать выход быть 99,96. Разве это не так?
Я даже попытался это, но он вернулся 99,97, а также:
return Math.Round(99.96535789 * 100, MidpointRounding.ToEven)/100;
Что я упускаю
Спасибо!
Так что вы говорите, что вы хотите, чтобы это _round_ до числа, которое находится дальше? Это странное определение «округленное». –
Это округление банкира для вас. Неудивительно, что мы в этом беспорядке ;-) –
Нет, это не округление банкира. Банковское округление - это когда вы выбираете раунд до четного *, когда два варианта одинаково отдалены *. Вы не находитесь в ситуации, когда два варианта одинаково отдалены. Один из них ближе, чем другой, и вы хотите выбрать тот, который находится дальше. –