Converts a valid String to a float. The input String should start with a digit. If the String contains non-digit characters, the function will stop performing the conversion. For example, the Strings "123.45", "123", and "123fish" are converted to 123.45, 123.00, and 123.00 respectively. Note that "123.456" is approximated with 123.46. Note too that floats have only 6-7 decimal digits of precision and that longer Strings might be truncated.
This Arduino description of usage of String seems to be wrong , it contradicts itself.
Of course we all been told over and over that the issue is with using String, not the way Arduino code works.
I would make sure the characters you have collected are only numeric.
Or use real String class to convert to float.
.