I did not get the last point if you wand 16 precision(16 number after '.') use the following code,
srand( (unsigned)time( NULL ) );
double d = (rand()/(double)RAND_MAX);
printf("%0.16lf",d);
if you want 16 digits after 0.0 use this code,
srand( (unsigned)time( NULL ) );
double d = (rand()/(double)RAND_MAX);
printf("%0.17lf",0.1*d);