Насколько я понимаю, создатели .NET решили сделать одолжение разработчикам банковских систем "...This kind of rounding is sometimes called rounding to nearest, or banker's rounding...", но что делать разработчикам других систем, где требуется обычный математический Round и не производятся каскадные округления, с чем собственно этот метод (
IEEE Standard 754, section 4) и борется???
Более того, все форматтеры, например
String.Format("{0:N}",1.445) использует обычное математическое округление, т.е. указанный пример вернет 1.45, хотя
Math.Round(1.445,2) вернет 1.44.
Т.е. на самом деле в дебрях .NET нормальное округление где-то есть, но почему-то его никому наружу не показывают.
Естественно можно написать свою функцию, но ладно, если бы она была в одну строчку,
Math.Floor(val,0.5)
, но ведь число 0,5 еще надо получить всякими возведениями в степень, т.е. как минимум не тривиально.
Что мешало создателям сделать 2 открытых функции???
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, Enforcer, Вы писали:
E>... Math.Round(1.445,2) вернет 1.44.
E>
данное сообщение получено с www.gotdotnet.ru
E>ссылка на оригинальное сообщение
зато Math.Round(1.445, 2, MidpointRounding.AwayFromZero) вернет 1.45