This is the expected behavior. See what the API says
Returns the closest long to the argument. The result is rounded to an integer by adding 1/2, taking the floor of the result, and casting the result to type long. In other words, the result is equal to the value of the expression:
(long)Math.floor(a + 0.5d)
Applying this formula to your numbers,
round( 4.5 )
= floor( 4.5 + 0.5d )
= floor( 5.0 )
= 5
round( (-4.5 )
= floor( -4.5 + 0.5d )
= floor( -4.0 )
= -4
Hope that helps!
------------------
Ajith Kallambella M. Sun Certified Programmer for the Java�2 Platform.
IBM Certified Developer - XML and Related Technologies, V1.