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

Floating Point fixed length Number formatting c#

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

填充
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 位数字,您可以在格式说明符中指定 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

在现代 .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