Hi,
I found, that rounding methods (Round and RoundToInt) probably have some issue when rounding threshold .5 value. Every line in example gives different result.

Debug.Log( Mathf.RoundToInt( 10.5f ) ); // result 10
Debug.Log( Mathf.RoundToInt( 11.5f ) ); // result 12

( Unity 5.6.1f1 )

Does anyone have some explanation please? Is this property or error?
Thanks,
T.

On the docs it says: â€śif the number ends in .5 so it is halfway between two integers, one of which is even and the other odd, the even number is returned.â€ť Thatâ€™s why it always jumps to 10,12,14 etcâ€¦

To be honest I find this really odd, I would have completely assumed it would round to the closest - most floating point units will round upwards if .5 or above

Rounding to the nearest even number is the way banks do it; it minimizes the accrued error by rounding. For example:

1.5 + 2.5 + 3.5 + 4.5

The actual result without rounding would be 12.
If you always round up, it becomes 2 + 3 + 4 + 5, or 14.
If you round to the nearest even, it becomes 2 + 2 + 4 + 4, or 12.

Rounding to the nearest even gets you closer to the actual value than always rounding up does.

@makeshiftwings is right. This is a feature. (Iâ€™m generally no Microsoft fanboy, but the C#/.NET team was very, very careful and got a lot of little details like this right.)