Формат удваивается с общим числовым форматом и дополняется справа нулями

Я пытаюсь вывести двойные значения различных размеров, отрицательные и неотрицательные, в столбцы. Я хотел бы использовать стандартный числовой формат G5, чтобы при необходимости он показывал экспоненциальный формат (т. Е. Значения были очень маленькими), но в противном случае регулярно форматировал. Но я бы хотел, чтобы значения были дополнены нулями, чтобы они выстраивались в столбцы (т. Е. Обычно нули дополняются нулями, а нули дополняются до E в экспонентах). В настоящее время у меня просто есть:

string.Format("{0}  {1}  {2}", a.ToString("G5"), b.ToString("G5"), c.ToString("G5"));

Это не работает слишком хорошо, так как не дополняет. Я хотел бы, чтобы мой вывод выглядел примерно так:

 1.234000000  0.123400000  1.23450E-03
 4.56780E-08  -1.2345E-09  0.001234000  // negative signs can line up with everything else
-12.34500000  0.045678900 -1.23450E-06  // or line up with each other, whatever is easier, but not both

Как мне этого добиться?

РЕДАКТИРОВАТЬ: Использование : формат как {0:10} с указанными числами дает:

1.234  0.1234  0.0012345
4.5678E-08  -1.2345E-09  0.001234
-12.345  0.045679  -1.2345E-06

1 ответ

Вы можете указать заполнение string.format используя синтаксис ",".

Образец будет:

string.Format("{0,20} {1,20} {2,20}", a.ToString("G5").PadRight(10, '0'), b.ToString("G5").PadRight(10, '0'), c.ToString("G5").PadRight(10, '0'));

или то же самое с -10.

Числа после запятой определяют символы текущего блока, метод PadRight используется для заполнения любым символом, который вы хотите. (В этом случае '0')

Не уверен, почему вы хотите использовать "G5", я думаю, это будет лучше для вас:

string.Format("{0} {1,15} {2,15}", a.ToString("E"), b.ToString("E"), c.ToString("E"))

Код:

double a = 0.00000000000000123;
double b = 0.1231;
double c =12312312;

var ccc = string.Format("{0} {1,15} {2,15}", a.ToString("E"), b.ToString("E"), c.ToString("E"));

//Result --> 1.230000E-015   1.231000E-001   1.231231E+007       
Другие вопросы по тегам