Use atof() or strtof()* instead:
printf("float value : %4.8f\n" ,atof(s));
printf("float value : %4.8f\n" ,strtof(s, NULL));
http://www.cplusplus.com/reference/clibrary/cstdlib/atof/
http://www.cplusplus.com/reference/cstdlib/strtof/
atoll()is meant for integers.atof()/strtof()is for floats.
The reason why you only get 4.00 with atoll() is because it stops parsing when it finds the first non-digit.
*Note that strtof() requires C99 or C++11.