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

时间:2011-11-28 08:48:03

标签: c# .net 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.

4 个答案:

答案 0 :(得分:83)

此模式{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"

答案 1 :(得分:7)

另一种使用字符串插值(C#6 +):

double x = 123.456;
$"{x,15:N4}"// left pad with spaces to 15 total, numeric with fixed 4 decimals

表达式返回:" 123.4560"

答案 2 :(得分:6)

value.ToString("N1");

更改小数位数的数字。

编辑:错过填充位

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

答案 3 :(得分:0)

以上所有解决方案都会进行十进制舍入,以防万一有人在寻找解决方案而不进行舍入

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