Q:

Determining if a time stamp is an exact hour

I need to determine if a time stamp is an exact hour (i.e. it represents a time with no minutes, seconds or milliseconds components) - using primitives only.  The code is called several hundred times per second and I don't want the overhead of a Calendar or other object.
I've tried this but rounding errors cause the comparison to fail.
 float hours = (time / 3600000f);
 boolean isExactHour = hours == (int)hours;

For example, if time = 1373763600470, hours = 381601.03125.  That time stamp represents 01:00:00:000 GMT today and hours should be 381601.
Any ideas for a quick and simple way to do this?  Thanks!
[EDIT] 
It seems that this is more complex than at first sight (when is it not? :)
For clarity, I don't care about time zones, nor leap seconds.  The time stamp is generated by a method which returns the previous midnight - i.e. 13 July 2013 00:00:00:000 for today.  I am then calculating, for any time stamp in an array of longs which is always this initial time stamp plus/minus an exact multiple of 5 minutes.  My aim to to determine if a given stamp is "top of the hour".  I might have edge cases where the multiple of 5 minutes overlaps a year end but I can live with those.

A:

(time % 36000000) == 0

Surely this is obvious?
EDIT
To get accuracy w.r.t. leap seconds, assuming a lookup table of leap seconds indexed by year since (say) 1970, something like:
((time-leapSeconds[(int)(time/(1000*60*60*24*365.2425))-1970]*1000) % 3600000) == 0

Programmers needing this level of accuracy should also see all of Einar's comments below.

