Как отформатировать значение в процентах без знака процента?

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

вывод: 47.9 %

что я должен передать ToString (), чтобы удалить знак процента для вывода следующим образом:

47.9

правка. Я должен был упомянуть, что я передаю маску стороннему компоненту, который делает это с ним. К сожалению, я не могу выполнять акробатические трюки с цифрами. Это должна быть маска, которая делает трюк.

4 ответов


я должен был упомянуть, что я прохождения маска для 3rd партия компонент, который делает ее вещь с он. Я не могу выполнять акробатические трюки. с цифрами, к сожалению. Оно имеет быть маской, которая делает трюк.

поэтому я предполагаю, что вы застряли с Float.ToString(String), и что вы не можете редактировать только p1 на 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());

        }
    }

это был бы путь, если вы не хотите изменять вызов ToString.


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

Как насчет следующих?

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

например, f = 0.4792 -- > "47.9"

список и описания стандартного числового формата доступны здесь на MSDN, если это поможет.


можно попробовать

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

или, если вы не хотите пространство, используйте Replace('%','')

EDIT: если вы можете использовать только ToString() метод, вы можете создать NumberFormatInfo object, установите символ процента пустым и передайте его в метод. (NumberFormatInfo находится в System.Globalization пространство имен) например,

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

    float f = 0.479f;

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