В документации msdn для Convert.ToInt32()
указано:
Если значение находится на полпути между двумя целыми числами, четное число равно вернулся; то есть 4.5 преобразуется в 4, а 5.5 преобразуется в 6.
http://msdn.microsoft.com/en-us/library/ffdk7eyz.aspx
Почему это?
Конечно, было бы логичнее округлить до ближайшего целого числа, не так ли? Если это так, 4.5 станет 5, а 5.5 станет 6, что кажется более интуитивным.