1. Określ czy chodzi Ci o
milisekundę czy o
mikrosekundę. Ponieważ piszesz o jednym, a operujesz na funkcjach przeznaczonych do pracy z drugim.
2. Pamiętaj, że system operacyjny może celowo nie odświeżać zegara zbyt często m.in. w celu oszczędności energii. Windows o ile dobrze pamiętam odświeża zegar z częstotliwością zaledwie 80-100Hz.
3. Pamiętaj, że nawet jeżeli jakaś funkcja zwróci Ci czas z rozdzielczością mikrosekundy wcale nie jest powiedziane, że będzie to czas z dokładnością do jednej mikrosekundy. Przeciętny domowy komputer, nie posiada po prostu zegara, który byłby wstanie tak dokładnie mierzyć czas. Innymi słowy, ostatnie cyfry z wyniku mogą być kompletnie losowe.
4. Co jest złego z
(new Date()).getTime()/1000? Uzyskasz tutaj czas z precyzją milisekundy.
* mam nadzieję, że nigdzie nie pomyliłem dokładności z precyzją.

EDIT: Pamiętaj też o tym, że typ
float nie operuje na dokładnych wartościach.