Формат удваивается с общим числовым форматом и дополняется справа нулями
Я пытаюсь вывести двойные значения различных размеров, отрицательные и неотрицательные, в столбцы. Я хотел бы использовать стандартный числовой формат 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