浮点固定长度数字格式c#

时间:2018-08-13 15:56:39

标签: c# string-formatting format-specifiers

我想按以下方式在C#中格式化浮点数,以使C#中的浮点数的整个宽度为固定长度(python等效格式说明符6.2f),我不希望它用0填充。左侧,但用空白填充

100.00
 90.45
  7.23
  0.00

到目前为止我尝试过的

string.Format({0:###.##},100); 
string.Format({0:###.##},90.45);
string.Format({0:###.##},7.23);
string.Format({0:###.##},0.00);

但输出不正确

100
90.45
7.23
      //nothing is printed

我也经历过this,但是找不到解决方案。 我知道string.PadLeft方法,但是我想知道是否有比

更合适的方法
(string.format({0,0.00},number)).PadLeft(6," ")

编辑 我特别是在问是否有正确的内置方法,而不是可以用相同的数学向导来完成

2 个答案:

答案 0 :(得分:1)

如果始终要在小数点后两位,则可以在格式说明符中指定00。您还需要使用右对齐的字段宽度(我使用6作为最大字段宽度)。

尝试一下:

void Main()
{
    Console.WriteLine(string.Format("{0,6:##0.00}",100.0)); 
    Console.WriteLine(string.Format("{0,6:##0.00}",90.45));
    Console.WriteLine(string.Format("{0,6:##0.00}",7.23));
    Console.WriteLine(string.Format("{0,6:##0.00}",0.00));
}

在LinqPad中,它输出:

100.00
 90.45
  7.23
  0.00

答案 1 :(得分:1)

在现代 .NET 5.0+ 中,您不需要调用 string.Format 目录。相反,在字符串前使用 $,并使用 {..}

分隔变量
double float1 = 100.0;
double float2 = 0.2;
Debug.WriteLine($"{float1:##0.00}");    // 100.00
Debug.WriteLine($"{float2:##0.00}");    // 0.20