如何在C#中对齐浮点数字(左填充)

如何在C#中对齐浮点数字(左填充),c#,floating-point,gtk#,number-formatting,C#,Floating Point,Gtk#,Number Formatting,我有以下浮点数,都有2位小数: 2.47 57.83 93.92 119.20 我想将这些数字输出如下: 2.47 57.83 93.92 119.20 如果字体不是等距的,如何在C#中实现这一点 编辑: 或者是否有任何不可见的字符占用与数字相同的水平空间?试试string.Format(“{0,6:F2}”,number)我以前从未使用过Gtk,但谷歌搜索显示了这一点 这是一种更简单、更可靠的策略,比试图将字符串操纵到适当的宽度要简单得多。我的解决方案是用(U+2007)填充,其宽

我有以下浮点数,都有2位小数:

2.47
57.83
93.92
119.20
我想将这些数字输出如下:

  2.47
 57.83
 93.92
119.20
如果字体不是等距的,如何在C#中实现这一点

编辑:

或者是否有任何不可见的字符占用与数字相同的水平空间?

试试
string.Format(“{0,6:F2}”,number)

我以前从未使用过
Gtk
,但谷歌搜索显示了这一点


这是一种更简单、更可靠的策略,比试图将字符串操纵到适当的宽度要简单得多。

我的解决方案是用(U+2007)填充,其宽度等于一个数字的宽度:

label.Text = number.ToString("0.00").PadLeft(6,'\x2007');

您是想将这些字符填充为
小数
还是将它们转换为
字符串
,然后再填充它们?如果字体不是单间距的,您必须有某种方法来测量所使用的特定字体的空格宽度和数字。老实说,如果这不是一个控制台应用程序,那么依赖您选择的UI框架提供的任何功能都会容易得多。@Brian,我想将它们转换为
字符串
,然后填充它们。@p.s.w.g,实际上它是一个Gtk.Label这可能会有帮助:谢谢您的回答,不幸的是它不起作用,因为它用空格填充,空格字符使用的水平空间比数字少。@sergej您提到的Java的
String.format
可以处理非固定宽度的字体吗?也许我把太多的注意力放在了字符串上,而对排版太少了?NET中的字符串不包含有关排版特征的信息,如每个字形的宽度。@p.s.e.g,谢谢您的回答,不幸的是它不起作用。我想这是因为我有一个
MenuItem
标签
@sergej这似乎是一个完美的例子。我建议你更新你的问题,详细说明你最终要完成的目标和你的困境。在任何情况下,
MenuItem
类似乎都有一个属性。顺便说一句,是的,有一个属性的宽度应该与一个数字的宽度相同,但我仍然不推荐这种方法,除非您已经用尽了所有其他路径。
label.Text = number.ToString("0.00").PadLeft(6,'\x2007');