Есть ли спецификатор формата С#, который будет пропускать начальный ноль, если значение не равно нулю?

Другими словами, я хочу, чтобы 0.123 отображался как ".123", но 0 должен отображаться как "0". В настоящее время лучшее, что у меня есть, это

String.Format("{0:.###}", n)

который дает ".123" для 0.123, но "" (пустая строка) для 0.

3 ответа

Если вы используете ; в качестве разделителя, вы можете указать форматы для положительных, отрицательных и нулевых значений. string.Format("{0:.###;-.###;0}", n) будет отображать "0", когда n==0, и оставит начальный ноль для положительных и отрицательных значений. Проверьте ссылку MSDN здесь.


Если все остальное не удается, вы можете сделать что-то вроде:

string s = n == 0 ? "0" : String.Format("{0:.###}", n);

не блестящий, но выполнит свою работу: -)


вот что вы можете попробовать. Я добавил место, где вы можете протестировать код и изменить переменную от 0 до .1234, чтобы протестировать

var decNum =.1234;//change to 0 will return 0 change to .1234 will return the correct formatted value
var formatDecil = String.Format("{0:.###}", decNum);
formatDecil = string.IsNullOrEmpty(formatDecil) ? 0.ToString():formatDecil;

licensed under cc by-sa 3.0 with attribution.