如何在没有百分号的情况下将值格式化为百分比?

时间:2010-01-16 01:25:16

标签: c# .net-2.0 tostring

float f = 0.479f;
Console.WriteLine(f.ToString("p1"));

输出:47.9%

我应该传递给ToString()以删除输出的百分号,如下所示:

  

47.9

EDIT。我应该已经提到过,我正在将掩码传递给第三方组件,它可以实现它的功能。不幸的是,我无法使用这些数字进行任何杂技表演。它必须是制作技巧的面具。

4 个答案:

答案 0 :(得分:11)

  

我应该提到我   将面具传递给第三方   与之相关的组件   它。我不能表演任何杂技   不幸的是,这些数字。它有   成为伎俩的面具。

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

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

    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调用,这将是一种方法。

答案 1 :(得分:5)

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

答案 2 :(得分:2)

可以尝试

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

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

编辑:如果只能使用ToString()方法,则可以创建NumberFormatInfo对象,将百分比符号设置为空白并将其传递给方法。 (NumberFormatInfo位于System.Globalization命名空间中) e.g。

    NumberFormatInfo myNewFormat = new NumberFormatInfo();
    myNewFormat.PercentSymbol = "";

    float f = 0.479f;

    Console.WriteLine(f.ToString("p1",myNewFormat));

答案 3 :(得分:2)

以下几点怎么样?

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

e.g。 f = 0.4792 - &gt; “47.9”

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