Formattando un double o un float in una valuta in formato stringa, viene ritornato anche il simbolo della valuta relativa alla cultura del thread corrente. Nel caso quindi dell'italiano, viene stampato anche il simbolo dell'euro, oltre al numero con i separatori dei decimali e delle migliaia.
Per formattare una valuta bisogna semplicemente passare il parametro "c" ad uno dei metodi di formattazione (va bene il metodo Format della classe String o vari overload del metodo ToString() dei tipi numerici).

double price = 2000,00;

string priceFormatted = String.Format("{0:c}", price);


Mi è capitato però, di non aver la necessità di stampare il simbolo euro (o il simbolo dettato dalla cultura del thread corrente) e quindi di doverlo escludere dalla formattazione. Per raggiungere questo obbiettivo, è necessario utilizzare la classe NumberFormatInfo in questo modo:

NumberFormatInfo nfi = new CultureInfo("it-IT").NumberFormat;

nfi = (NumberFormatInfo)nfi.Clone();

//elimino il simbolo dell'euro nfi.CurrencySymbol = "";

double price = 2000,00;
string priceFormatted = String.Format(nfi, "{0:c}", price);


Spero possa esser utile a qualcuno..