See the info for "(1) arithmetic types" in the std::istream::operator>> docs. This uses num_get::get()
and the relevant part of the docs for that states "The function stops reading characters from the sequence as soon as one character cannot be part of a valid numerical expression".
So from the documentation it seems that all available digits will be read, but they won't all be used if the float type is too "narrow".