The 'float(value)' are of course failing.
Well, of course they are. The float macro is a crutch for people that don't understand casts. It evaluates to
if(count == 1) a = (float)value;
which, of course, is nonsense, since a String object can not be cast to a float.
You could use the value.toCharArray() method to extract the char array from the String object, then use atof() on the char array.