using System.Globalization;
public static void Main()
var nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 4;
nfi.NumberDecimalSeparator = "@";
nfi.NumberGroupSeparator = "^";
nfi.PerMilleSymbol = "#";
double aaa = -123456.789;
foreach (var formatString in new [] { "G", "N", "F", "P", "#0.## " + '\u2030'})
string str = aaa.ToString(formatString, nfi);
Console.WriteLine("aaa.ToString(\"{0}\") = {1}", formatString, str);