浮点数固定长度数字格式 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
我想在 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