Format double to 3 decimal places without decimal separator to a certain length I need to format a double value to three decimal places to a string with length of 9 with leading spaces and no decimal separator. 

My approach is this

NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = "a";
nfi.NumberGroupSeparator = "";

double a = 334.44554;

Console.WriteLine($"{a.ToString("####0.000", nfi).Replace("a", ""), 9}");


Is there a more elegant way to do this?
To truncate a double to 3 decimal places and remove the decimal separator, is I think more easily done by multiplying by 1000 and casting to an int.  Padding the result to 9 digits is easily done with a format specifier in the ToString method.  It could look something like this:

static string FormatNum(double num) =&gt; ((int)(num * 1000)).ToString("D9");


Note I've also put it in a method with an expression body.

I just noticed that you wanted the padding with spaces not zeros here's a version that does that:

static string FormatNum(double num) =&gt; string.Format("{0,9:D}",((int)(num * 1000)));


As was pointed out, your solution produced a rounded off number.  If that is required here's one way:

static string FormatNum(double num) =&gt; string.Format("{0,9:D}",((int)(Math.Round(num * 1000))));