Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 格式使用常规数字格式加倍,并用零向右填充_C#_String Formatting_Tostring_Number Formatting - Fatal编程技术网

C# 格式使用常规数字格式加倍,并用零向右填充

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

我正在尝试将各种大小的双精度输出到列中,负片和非负片。我希望使用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

可以使用语法“,”指定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