【问题标题】:Format decimal value to string with leading spaces将十进制值格式化为带前导空格的字符串
【发布时间】:2011-11-28 08:48:02
【问题描述】:

对于小于 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.

【问题讨论】:

    标签: c# .net vb.net string-formatting


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

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

    表达式返回:" 123.4560"

    【讨论】:

      【解决方案3】:
      value.ToString("N1");
      

      更改数字以获得更多小数位。

      编辑:错过了填充位

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

      【讨论】:

      • 谢谢。但在我的情况下,使用 PadLeft 不起作用,带有 {0:...} 占位符的字符串将包含比十进制值更多的文本。
      • @Taz:你必须写 `PadLeft(5)'。参数是要填充的字符串的总长度。
      • @Jakob:你为什么不能使用string.Format()
      • @Taz:不,只是PadLeft(5)
      • 谢谢!如果可以,我会避免使用 string.format。没有那些神秘的字符串代码,这在以后更容易维护。
      【解决方案4】:

      以上所有解决方案都会对小数进行四舍五入,以防万一有人在不四舍五入的情况下搜索解决方案

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

      【讨论】:

        【解决方案5】:

        很多很好的答案,但这是我用得最多的(c# 6+):

        Debug.WriteLine($"{height,6:##0.00}");
        //if height is 1.23 =>   "  1.23"
        //if height is 0.23 =>   "  0.23"
        //if height is 123.23 => "123.23"
        
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-05
          • 2017-09-09
          • 2017-04-30
          • 1970-01-01
          • 2017-02-11
          • 1970-01-01
          相关资源
          最近更新 更多