Как я могу отформатировать значение в процентах без знака процента? - PullRequest
11 голосов
/ 16 января 2010
float f = 0.479f;
Console.WriteLine(f.ToString("p1"));

Выход: 47,9%

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

47,9

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

Ответы [ 4 ]

11 голосов
/ 16 января 2010

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

Поэтому я предполагаю, что вы застряли с 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.

5 голосов
/ 16 января 2010
Console.WriteLine((f * 100).ToString("0.0"));
2 голосов
/ 16 января 2010

Как насчет следующего?

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

например. f = 0,4792 -> "47,9"

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

2 голосов
/ 16 января 2010

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

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

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

РЕДАКТИРОВАТЬ: Если вы можете использовать только метод ToString(), вы можете создать объект NumberFormatInfo, установить процентное значение пустым и передать его в метод. (NumberFormatInfo находится в пространстве имен System.Globalization) например,

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

    float f = 0.479f;

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