我试图将各种大小的负数和非负数输出到列中。我想使用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
答案 0 :(得分:0)
您可以使用语法","指定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