Вы можете использовать заполнитель 0 с последующим литералом точки, вставленным в строку формата.Чтобы вставить литерал, экранируйте его обратной косой чертой.Обратите внимание, что одиночная обратная косая черта уже является экранированием для строковых литералов, поэтому вам действительно нужно два, или вы можете использовать дословную строку , как в этом примере:
var d = 10.00M;
Console.WriteLine( d.ToString(@"0\.") ); //Outputs "10."
Если выбеспокоятся об интернационализации, не используйте константу периода;используйте десятичный разделитель из текущей культуры .
string decimalSymbol = Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator;
Console.WriteLine( d.ToString(@"\" + decimalSymbol) ); //Outputs "10." or "10,"