The definition of _ROUND in the Wiki gives:
The _ROUND function rounds to the closest even INTEGER, LONG or _INTEGER64 numerical value.
Thinking to myself "Why would anybody want to round to the nearest even integer (that is to say one that is divisible by 2)?", I think that this sentence is wrong and should not contain the word "even". _ROUND rounds to the nearest integer:
gives 6, 6, 5 as expected (not 6, 6, 6!).
Meanwhile I thought that I'd demonstrate to myself that CINT always behaves properly, but:
gives: -6, -6, -4, -4, -2, -2, 0, 0, 2, 2, 4, 4, 6, 6
I'd have expected: -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7
Actually, I'm not quite sure what I'd have expected for the negative numbers (!), so I'll stick with the positive numbers.
We normally round 6.5 to 7. This is because the numbers 0 to 9 split in half as:
0,1,2,3,4
5,6,7,8,9
so any decimal number 6.0..., 6.1..., 6.2..., 6.3..., 6.4... rounds down to 6
and any decimal number 6.5..., 6.6..., 6.7..., 6.8..., 6.9... rounds up to 7
6.5 exactly may be a moot point as it is, of course, exactly half way between 6 and 7, but by convention (I thought) 6.5 rounds up to 7.
I would not expect 5.5 (rounds UP) to behave differently to 6.5 (rounds DOWN).
I suppose that this oddity is because of the conversions to binary. By the way my few brain cells can never actually envisage a decimal in binary but that's just one of my problems.
Any comments on CINT(n.5) always rounding to an even integer?? I suspect that any oddity is in the person writing this!