Undocumented behavior of the CInt() function

Undocumented behavior of the CInt() function

The CInt() function rounds to the nearest integer value. In other words, CInt(2.4) returns 2, and CInt(2.6) returns 3.

This function exhibits an under-documented behavior when the fractional part is equal to 0.5. In this case, this function rounds down if the integer portion of the argument is even, but it rounds up if the integer portion is an odd number. For example, CInt(2.5) returns 2, but CInt(3.5) returns 4.

This behavior shouldn’t be considered as a bug, because it helps not to introduce errors when doing statistical calculations.UPDATE: Matthew Wills let us know that this behavior is indeed documented in VB6’s help file:When the fractional part is exactly 0.5, CInt and CLng always round it tothe nearest even number. For example, 0.5 rounds to 0, and 1.5 rounds to 2.CInt and CLng differ from the Fix and Int functions, which truncate, ratherthan round, the fractional part of a number. Also, Fix and Int always returna value of the same type as is passed in.


Share the Post: