将十进制值格式化为前导空格的字符串

Jak*_*ade 50 .net c# vb.net string-formatting

如何将小数值格式化为逗号/点后面的单个数字的字符串,以及值小于100的前导空格?

例如,十进制值12.3456" 12.3"与单个前导空格一样输出.10.011会的" 10.0".123.123"123.1"

我正在寻找一种解决方案,它适用于标准/自定义字符串格式,即

decimal value = 12.345456;
Console.Write("{0:magic}", value); // 'magic' would be a fancy pattern.
Run Code Online (Sandbox Code Playgroud)

nem*_*esv 87

这种模式{0,5:###.0}应该有效:

string.Format("{0,5:###.0}", 12.3456) //Output  " 12.3"
string.Format("{0,5:###.0}", 10.011)  //Output  " 10.0" 
string.Format("{0,5:###.0}", 123.123) //Output  "123.1"
string.Format("{0,5:###.0}", 1.123)   //Output  "  1.1"
string.Format("{0,5:###.0}", 1234.123)//Output "1234.1"
Run Code Online (Sandbox Code Playgroud)

  • 对此有好的参考吗?即如果我的用例略有不同,每个部分会做什么. (6认同)
  • @tjrobinson一切都在MSDN上:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx和http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx (5认同)
  • 如果在-1.0和1.0之间的值需要前导零,则应将模式更改为"{0,5:## 0.0}". (4认同)

Fre*_*jer 9

另一个带有字符串插值(C#6+)的字符串:

double x = 123.456;
$"{x,15:N4}"// left pad with spaces to 15 total, numeric with fixed 4 decimals
Run Code Online (Sandbox Code Playgroud)

表达式返回: " 123.4560"


Taz*_*Taz 6

value.ToString("N1");
Run Code Online (Sandbox Code Playgroud)

更改小数位数的数字.

编辑:错过了填充位

value.ToString("N1").PadLeft(1);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!如果可以的话,我会避免使用 string.format。没有那些神秘的字符串代码,以后维护起来会容易得多。 (4认同)
  • @Taz:你必须写“PadLeft(5)”。参数是要填充的字符串的总长度。 (2认同)
  • @Taz:不。只需“PadLeft(5)” (2认同)