代码之家  ›  专栏  ›  技术社区  ›  AngryHacker

如何将值格式化为不带百分号的百分比?

  •  11
  • AngryHacker  · 技术社区  · 15 年前
    float f = 0.479f;
    Console.WriteLine(f.ToString("p1"));
    

    产量:47.9%

    我应该将什么传递给toString(),以便删除输出的百分号,如下所示:

    第47.9条

    编辑。我应该提到,我正在把这个面具传递给第三方组件,它与它有关。不幸的是,我不能用数字表演任何杂技。必须是面具才行。

    4 回复  |  直到 10 年前
        1
  •  11
  •   Dynami Le Savard    15 年前

    我应该说我是 将面具传递给第三方 与之相关的组件 它。我不能表演杂技 不幸的是,有了这些数字。它有 做一个面具。

    所以我假设你被困在 Float.ToString(String) 你不能只编辑 p1 在里面 f.ToString("p1") .现在这是一个棘手的问题。如果您不害怕破坏与所暗示的更改相关的任何内容,可以执行以下操作:

    记录的“P”数字格式 On MSDN 使用 NumericFormatInfo.PercentSymbol 为了写“%”符号。 NumericFormatInfo 是您当前的成员 CultureInfo . 你能做的就是克隆你的 CurrentCulture ,并将百分号修改为 "" 如下所示:

        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                float f = 0.479f;
                Console.WriteLine(f.ToString("p1")); //will write 47.9%
    
                CultureInfo ci = CultureInfo.CurrentCulture.Clone() as CultureInfo;
                ci.NumberFormat.PercentSymbol = "";            
    
                System.Threading.Thread.CurrentThread.CurrentCulture = ci;
                Console.WriteLine(f.ToString("p1")); //will write 47.9
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
    
            }
        }
    

    如果您不想更改toString调用,这将是一种方法。

        2
  •  5
  •   Rubens Farias    15 年前
    Console.WriteLine((f * 100).ToString("0.0"));
    
        3
  •  2
  •   Noldorin    15 年前

    就以下几点怎么样?

    Console.WriteLine((f * 100).ToString("F1"));
    

    例如f=0.4792-->“47.9”

    提供标准数字格式的列表和说明。 here on MSDN ,以防万一。

        4
  •  2
  •   keyboardP    15 年前

    可以尝试

    Console.WriteLine(f.ToString("p1").Replace('%',' '));
    

    或者,如果您不想要空间,请使用 Replace('%','\0')

    编辑:如果您只能使用 ToString() 方法,可以创建 NumberFormatInfo 对象,将百分比符号设置为空并将其传递给方法。 ( 数字格式信息 是在 System.Globalization 命名空间) 例如

        NumberFormatInfo myNewFormat = new NumberFormatInfo();
        myNewFormat.PercentSymbol = "";
    
        float f = 0.479f;
    
        Console.WriteLine(f.ToString("p1",myNewFormat));