В основном, # означает необязательный, где 0 является обязательным.Что касается лучшего объяснения, если вы поставите #, тогда если число доступно для заполнения заполнителя, оно будет добавлено, если нет, оно будет проигнорировано.
Установка 0, однако, отличается, так как она всегда устанавливает значениедля вас.
Вы можете объединить их вместе.
String.Format("{0:0.##}", 222.222222);
// 222.22
String.Format("{0:0.##}", 222.2);
// 222.2
String.Format("{0:0.0#}", 222.2)
// 222.2