C # десятичный запрос форматирования - PullRequest
2 голосов
/ 14 декабря 2009

Я пытаюсь отформатировать десятичное число, чтобы оно отображалось следующим образом:

14,5 должно отображаться как "14.50" 14.50 должно отображаться как «14.50» 14.05 должно отображаться как «14.05» 14,00 должно отображаться как «14»

Возможно ли использование одного строкового формата, т. Е. Не использовать условное форматирование?

Я пробовал "0. ##" (не удовлетворяет первому примеру) и "0.00" (не удовлетворяет последнему примеру).

Спасибо.

Ответы [ 4 ]

4 голосов
/ 14 декабря 2009

Да. Вы можете использовать спецификатор формата "G". Образцы см. В документации String.Format .

Например:

decimal value = 14.05m;
string result = String.Format("{0:G}", value); // "14.05"

value = 14m;
result = String.Format("{0:G}", value); // "14"
1 голос
/ 14 декабря 2009

Вы можете использовать что-то вроде: FormatNumber (VariableToBeFormatted, 2) .Replace (". 00", String.Empty)

0 голосов
/ 14 декабря 2009

Следуйте ответу Рида и добавьте проверку после этого:

resultArray = result.Split('.');

if (resultArray.Length > 1 && resultArray[1].Length != 2)
    result = String.Format("{0.00}", value);

Не совсем элегантно, но даст вам желаемый результат.

Предполагается, что человек, говорящий, что он не относится к 14.5, прав в комментариях.

0 голосов
/ 14 декабря 2009

Я не думаю, что вы сможете сделать это без какого-либо условного форматирования, потому что вы хотите, чтобы форматирование делало разные вещи в разных случаях.

Если бы вы согласились на 14,5 вместо 14,50, вы бы согласились с синтаксисом 0. ##, но я не могу придумать, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...