C# двойное форматирование выравниваются на десятичном знаке

Я выравниваю числа с различным количеством десятичных чисел так, чтобы десятичный знак выровнялся на прямой строке. Это может быть achevied путем дополнения пробелами, но я испытываю затруднения.

Кладет говорят, что я хочу выровнять следующие числа: 0 0.0002 0.531 2.42 12.5 123.0 123172

Это - результат, который я после:

     0
     0.0002
     0.531
     2.42
    12.5
   123.0
123172
6
задан Paaland 25 February 2010 в 09:27
поделиться

2 ответа

Если вам нужен именно такой результат, вы не можете использовать любое форматирование числовых данных, так как это не форматирует 123 как 123.0 . Вы должны рассматривать значения как строки, чтобы сохранить конечный ноль.

Это дает вам именно тот результат, который вы просили:

string[] numbers = { "0", "0.0002", "0.531", "2.42", "12.5", "123.0", "123172" };

foreach (string number in numbers) 
{
    int pos = number.IndexOf('.');
    if (pos == -1) 
        pos = number.Length;
    Console.WriteLine(new String(' ', 6 - pos) + number);
}

Вывод:

     0
     0.0002
     0.531
     2.42
    12.5
   123.0
123172
6
ответ дан 17 December 2019 в 07:03
поделиться

Для этого можно использовать метод double string.format или ToString.

double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;

string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: $19.95.

MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: ($19.95).
// The minus sign is omitted by default.

MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: Zero.

эта статья из msdn может помочь вам, если вам понадобится дополнительная информация

-2
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: