@thek no jasne, że trzeba ustawić precyzję, ale IMHO to było oczywiste, tym bardziej przy microtime.
Substr — jak mówi manual — zwraca fragment ciągu tekstowego.
Microtime — zwraca aktualny uniksowy znacznik czasu z mikrosekundami.
Pomimo braku jawnego rzutowania typów, moim zdaniem, powinno używać się funkcji do tego przeznaczonych.
Przykładowo:
$start = 16127.1601251266477;
$stop = 16127.66001251266477;
$roznica = $stop - $start;
// jest różnica, prawda? a jak pójdziemy parę kroków dalej:
// A jak te dane teraz ktoś zaokrągli do liczb całkowitych? z 0.5 => 1, a z 0.4 => 0