C# 格式使用常规数字格式加倍,并用零向右填充
我正在尝试将各种大小的双精度输出到列中,负片和非负片。我希望使用G5标准数字格式,以便在适当时使用指数格式(即值非常小),但在其他情况下使用常规格式。但我希望这些值适当地用零填充,以便在列中对齐(即,通常在右边填充零,在指数中在e之前填充零)。目前,我只有:C# 格式使用常规数字格式加倍,并用零向右填充,c#,string-formatting,tostring,number-formatting,C#,String Formatting,Tostring,Number Formatting,我正在尝试将各种大小的双精度输出到列中,负片和非负片。我希望使用G5标准数字格式,以便在适当时使用指数格式(即值非常小),但在其他情况下使用常规格式。但我希望这些值适当地用零填充,以便在列中对齐(即,通常在右边填充零,在指数中在e之前填充零)。目前,我只有: string.Format("{0} {1} {2}", a.ToString("G5"), b.ToString("G5"), c.ToString("G5")); 这不太好用,因为它没有衬垫。我希望我的输出如下所示: 1.234
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
可以使用语法“,”指定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"))
代码:
您可以使用“,”like-->string.Format(“{0,10}{1,10…”,…”,…)而不做任何事情(我尝试了10和-10)。我使用上述数字的输出是(为了更好地格式化,我将添加到我的问题中):
1.234 0.1234 0.0012345
4.5678E-08-1.2345E-09 0.001234
-12.345 0.045679-1.2345E-06
不会在指数后填充0s吗,即…e-0300
?是的,它会…为什么不使用“e”相反?因为我更喜欢12.345到1.2345E+01和.12345到1.2345E-01。即使我使用了E,我如何在E之前填充0?
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