You converting it to an integer, thats just the way it works, rounding the number would be the most logical thing to do during a conversion like that. Btw., you shouldn't use CInt but System.Convert.ToInt32() :), as CInt is an old function which shouldn't exist by now :).
What you can do though is floor the number and convert it to an integer, or do the work yourself.
Dim d as Double = 2.999999
Dim i as integer = Convert.ToInt32(Math.Floor(d))