Build a double from a stream of chars
You should avoid while (true) { … } loops wherever it is possible to do so.  Here, it's very obviously avoidable!

while ("0123456789.".Contains((char)dataStream.Peek()))
{
    …
}


This parser leaves much to be desired in terms of handling


negative numbers (or you should document the fact that they are unsupported)
e notation for powers of ten
overflow and small numbers, due to excessive multiplying and dividing by powers of ten


Personally, I would avoid the entire headache by appending all plausible-looking characters to a StringBuilder, then calling double.Parse(string).