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

Ang*_*ker 11 c# tostring .net-2.0

float f = 0.479f;
Console.WriteLine(f.ToString("p1"));
Run Code Online (Sandbox Code Playgroud)

产量:47.9%

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

47.9

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

Dyn*_*ard 11

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

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

在"P"的数字格式,如记录在MSDN,使用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());

        }
    }
Run Code Online (Sandbox Code Playgroud)

如果您不想更改ToString调用,那么这将是一种方法.


Rub*_*ias 5

Console.WriteLine((f * 100).ToString("0.0"));
Run Code Online (Sandbox Code Playgroud)