La lettura dei file binari non è nient'altro che un fread ma come rappresentarli nel tuo formato che le cose cambiano. Io vedo un double come 2 valore e in binario non si possono salvare dati in virgola mobile. E qui che entra in gioco il formato specificato.
Cmq per leggere il tuo file non è dificile, il dificile viene interprettarlo.
BYTE byte[4];
fread(byte,1,4,fp);
una volta che ho i 4 byte sul buffer li posso estrappolare per formare un valore intero.
int val = ((byte[0]<<24)|(byte[1]<<16)|(byte[2]<<8)|(byte[3]));