Почему этот код не работает правильно? Не понимаю ли я что-то?Ошибка форматирования текста C# с фигурной скобкой
System.Console.WriteLine("{{{0:c}}}", 12323.09m);
Реальный выход:
{с}
Ожидаемый результат:
{$ 12,323.09}
Почему этот код не работает правильно? Не понимаю ли я что-то?Ошибка форматирования текста C# с фигурной скобкой
System.Console.WriteLine("{{{0:c}}}", 12323.09m);
Реальный выход:
{с}
Ожидаемый результат:
{$ 12,323.09}
Попробуйте это:
System.Console.WriteLine("{" + String.Format("{0:C}", 12323.09) + "}");
Это работает, но на самом деле не отвечает на вопрос, почему код OP не работает должным образом. – Blorgbeard
@Blorgbeard Я думаю, у вас больше опыта в декодировании сломанного английского, чем у меня. – user700390
Думаю, да. В одном предложении есть только пара напряженных ошибок. «Почему этот код не работает правильно?» является очевидным «расшифровкой». – Blorgbeard
Вопрос заключается в том, что {{{0:c}}}
анализируется как {{
{
... }}
}
, а не как {{
{
... }
}}
.
Попробуйте
System.Console.WriteLine("{{{0:c}{1}", 12323.09m, '}');
Или увидеть подобный образец в MSDN (см побег Скобы):
int value = 6324;
string output = string.Format("{0}{1:D}{2}",
"{", value, "}");
Console.WriteLine(output);
зачем вам нужен дополнительный '{}' вокруг валюты суммы – MethodMan
Поразительно, на этот раз это на самом деле ошибка C#! См. Этот ответ: http://stackoverflow.com/a/15085178/369 – Blorgbeard
'var currFormat = string.Format (" {0: c} ", 12323.09m);' yeilds '$ 12,323.09' – MethodMan