Форматирование и заполнение строки в C # - PullRequest
4 голосов
/ 07 января 2010

Кажется, что это должно быть что-то простое, но я не смог сделать это правильно. Я посмотрел на http://idunno.org/archive/2004/14/01/122.aspx для справки.

Пример: Я хотел бы напечатать таблицу двойных значений с каждым двойным выводом с точностью до 3 десятичных знаков и занимать 10 пробелов (по левому краю). Концептуально, я попробовал что-то подобное, но это работает только с точностью ИЛИ, но не одновременно:

foreach(line in lines)
{
    foreach (double val in line)
    {
         Console.Write("{0:0.000,-10}", val);
    }

    Console.WriteLine()
}

Обновление: я могу использовать padleft / padright в очень простых сценариях, если у меня более сложный вывод, он становится не очень кратким. Есть ли что-то похожее на sprintf?

Ответы [ 2 ]

8 голосов
/ 07 января 2010

Попробуйте

double d = 3.14;
Console.WriteLine("{0,10:0.000}", d);

P.S: посмотрите на эту статью в качестве учебника по форматированию строк. Кроме того, string.Format должен позволять вам делать все, что делает sprintf - и даже больше ... что еще вы пытаетесь сделать?

0 голосов
/ 28 июня 2014

полезно

|{0,-10:0.00}| => |87,87 | - With "-" => padRight

|{0,10:0.000}| => | 87,878| - Without "-" => padLeft

|{3,-10:0.###}| - ### - печатает числа после десятичного числа ",", только если оно имеет смысл (не 0): 87,8000 => 87,8

...