我想按以下方式在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," ")
编辑 我特别是在问是否有正确的内置方法,而不是可以用相同的数学向导来完成
答案 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