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

问题描述:

如何在小于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. 

这种模式{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" 
+0

它当然是!谢谢! :) –

+3

这是否有一个很好的参考?即如果我的用例略有不同,每个部分都会做什么。 – tjrobinson

+4

@tjrobinson一切都在MSDN上:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx和http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx – nemesv

value.ToString("N1"); 

变化更多的小数位数。

编辑:错过了填充位

value.ToString("N1").PadLeft(1); 
+0

谢谢。但PadLeft的使用不适用于我的情况,带有{0:...}占位符的字符串将包含更多文本而不仅仅是十进制值。 –

+0

@Taz:你必须写'PadLeft(5)'。该参数是要填充的字符串的总长度。 – Jan

+0

@Jakob:为什么你不能使用'string.Format()'? – Jan

所有上述解决方案将做小数的四舍五入,以防万一有人不四舍五入
正在寻找解决方案

decimal dValue = Math.Truncate(1.199999 * 100)/100; 
dValue .ToString("0.00");//output 1.99