格式化固定字符数的自定义数字字符串

时间:2013-12-03 11:19:57

标签: c# formatting string-formatting

我需要使用固定数量的字符转换固定格式的任何数字。装置1500和-1.5或0.025需要具有相同的长度。我还必须以这种形式提供格式:Format = "{???}";

当我输入Format = "{0000}";时,我可以将1500限制为“1500”,但是-1.5 - > “-0001.5”表示我在此之后有太多数字。

可以使用Format = "{ 0.0;-0.0; 0.0}"来填写负号。

如何修复不同数字的数字计数?

字符串的长度无关紧要,最重要的是长度相等。

示例:

1500 ->    " 1500.000" or "     1500"
-1500 ->   "-1500.000" or "-    1500" or "    -1500"
1.5  ->    "    1.500" or "      1.5"
-0.25->    "   -0.250" or "-    0.25"
0.00005 -> "    0.000" or "        0"
150000->   " 150000.0" or "   150000"
15000000   " 15000000"

编辑:

我想格式化图表的y轴。我无法使用类似value.ToString("???")的内容我需要使用chartArea.AxisY.LabelStyle.Format = "{???}";

3 个答案:

答案 0 :(得分:1)

为什么不使用格式? “F3”强制小数点后3位数,PadLeft确保总长度

  Double value = 1500.0;
  // 3 digits after decimal point, 9 characters length
  String result = value.ToString("F3").PadLeft(9, ' ');

         0 ->     0.000
    1500.0 ->  1500.000
   -1500.0 -> -1500.000
     -0.25 ->    -0.250

另一种(类似的)可能性是String.Format:

  Double value = 1500.0;
  // Put value at place {0} with format "F4" aligned to right up to 9 symbols
  String result = String.Format("{0:9,F4}", value);

答案 1 :(得分:0)

试一试> result = Math.Round(yourValue, 3);
查看完整参考here

答案 2 :(得分:0)

你无法通过简单的格式化功能实现这一目标

   string result = string.Empty;

        var array = dec.ToString().Split('.');
        if (dec > 0)
        {

            result = array[0].PadLeft(9).Remove(0, 9);


            if (array.Count() > 1)
            {
                result += '.' + array[1].PadRight(3).Remove(3);
            }
        }
        else
        {

            result = "-"+array[0].PadLeft(9).Remove(0, 9);
            if (array.Count() > 1)
            {
                result += '.' + array[1].PadRight(3).Remove(3);
            }

        }