Извините за повторную активацию этого вопроса, но я не нашел правильного ответа здесь.
При форматировании чисел вы можете использовать 0
в качестве обязательного места и #
в качестве дополнительного места.
Итак:
// just two decimal places
String.Format("{0:0.##}", 123.4567); // "123.46"
String.Format("{0:0.##}", 123.4); // "123.4"
String.Format("{0:0.##}", 123.0); // "123"
Вы также можете объединить 0
с #
.
String.Format("{0:0.0#}", 123.4567) // "123.46"
String.Format("{0:0.0#}", 123.4) // "123.4"
String.Format("{0:0.0#}", 123.0) // "123.0"
Для этого метода форматирования всегда используется CurrentCulture
. Для некоторых культур .
будет изменено на ,
.
Ответ на оригинальный вопрос:
Самым простым решением является @Andrew ( здесь ). Так что я бы лично использовал что-то вроде этого:
var number = 123.46;
String.Format(number % 1 == 0 ? "{0:0}" : "{0:0.00}", number)