Questo perché toString() usa l'attuale CultureInfo! Dipende dalle impostazioni cultura se un double è separato da una virgola o da un punto.
Vedi anche questo Domanda sull'overflow dello stack!
Se esegui il debug dovresti vedere che quel lettore["Prezzo"] sta restituendo un Oggetto (tipo=Oggetto{doppio}). Qui il valore è corretto? Immagino di sì, quindi segui semplicemente per visualizzare il doppio valore:
string display = double.Parse(reader["Price"], CultureInfo.InvariantCulture).ToSring(CultureInfo.CurrentCulture);
System.Diagnostics.Debug.WriteLine(display);