microtime() restituisce un valore di tipo stringa. in particolare avrai l'attuale data in formato unix epoch (il numero di secondi trascorsi dal 1 gennaio 1970) preceduta dai millisecondi, quindi ad esempio:
codice:
<?php
echo microtime();
?>
ti stampa qualcosa del tipo
0.89013400 1097428936
(si tratta di una stringa)
per quanto riguarda il termine "double" invece, si tratta dei numeri con la virgola, uno dei tipi di dato riconosciuti da php (sinonimo di float).
con quell'operazione stai facendo un casting da stringa a double, ossia forzi una stringa ad essere interpretata come double. ecco quindi che
codice:
<?php
echo (double)microtime();
?>
ti stamperebbe soltanto
0.89013400
ossia il risultato del casting.
con la funzione srand() ne hai bisogno perche questa prende come parametro un numero intero e non una stringa
altro esempio di casting:
codice:
$pippo = "una stringa";
echo $pippo; // stampa la stringa
$pippo = (int)$pippo; // casting a intero
echo $pippo; // stampa "0", il risultato del casting
maggiori info naturalmente sul manuale