Ответ 1
Если вы используете
string.Format("{0:$#,##0.00;($#,##0.00);''}", value)
Вы получите "" для нулевого значения, а остальные значения должны быть отформатированы правильно.
Я пытаюсь использовать String.Format( "{0: c}", somevalue) в С#, но мне сложно определить, как настроить вывод для удовлетворения моих потребностей. Вот мои потребности:
Я попробовал String.Format( "{0: c}", somevalue), но для нулевых значений он выдает $0.00, который я не хочу. Я также попробовал String.Format( "{0: $0,0.00; $(0,0.00); #}", somevalue), но для 1.0 он выдает $01.00. String.Format( "{0: $0.00; $(0.00); #}", somevalue) работает в большинстве случаев, но когда какое-то значение составляет 1000.00, выход составляет $1000,00.
Есть ли какой-то формат, который будет соответствовать всем 5 случаям выше? Вся документация, которую я прочитал, только детализирует основы и не затрагивает этот тип сценария.
Если вы используете
string.Format("{0:$#,##0.00;($#,##0.00);''}", value)
Вы получите "" для нулевого значения, а остальные значения должны быть отформатированы правильно.
Попробуйте что-то вроде этого:
String currency = (number == 0) ? String.Empty : number.ToString("c");
В зависимости от того, используете ли вы один и тот же тип данных для всех ваших значений валюты, вы можете написать метод расширения, который сделает его таким, чтобы ваш случай всегда выполнялся. Например, если вы использовали десятичный тип:
public static string ToCurrencyString (this decimal value)
{
if (value == 0)
return String.Empty;
return value.ToString ("C");
}
Вот отличная ссылка, которую вы можете найти полезной, которая суммирует эти данные: http://blog.stevex.net/string-formatting-in-csharp/
Форматы валют "C" велики, пока вам не понадобится пустое значение 0. Вот два способа, упомянутые выше, похожие на те, которые я использую, дают вам пробел для 0:
// one way
string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue)
// another way
somevalue.ToString("$#,##0.00;($#,##0.00);''")
Вторая техника чувствует себя более "бегло", если вам нравится этот стиль кода (как и я).