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

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

Вывод: 47,9%

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

47.9

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

11
задан Stephan Muller 3 January 2015 в 22:30
поделиться

4 ответа

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

Итак, я предполагаю, что вы застряли с помощью float.tostring (String) , и что вы не можете редактировать только P1 в F.Tostring («P1») . Теперь это сложный. Если вы не боитесь взлома что-либо, связанные с подразумеваемыми изменениями, вы можете сделать следующее:

Числовый формат «p», как документальный на MSDN , использует numericformathatinfo.percentsymbol Для того, чтобы написать знак «%». NumericFormatinfo является членом вашего текущего CultureInfo . То, что вы могли бы сделать, является клоном вашего enturnuceCulture , и изменить перцентюнтность в « Как и следующее:

    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 Call.

11
ответ дан 3 December 2019 в 05:58
поделиться
Console.WriteLine((f * 100).ToString("0.0"));
5
ответ дан 3 December 2019 в 05:58
поделиться

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

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

E.G. f = 0,4792 -> "47.9"

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

2
ответ дан 3 December 2019 в 05:58
поделиться

Может ли попробовать

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

или, если вы хотите, не хотите, чтобы пространство, используйте Заменить («%», «\ 0»)

Редактировать: Если вы можете использовать только TOSTRING () Метод, вы можете создать объект NUMBERFORMATINFO объекта, установите значение процентного символа, чтобы быть пустым и передавать его в метод. ( NumberFormatinfo находится в System.Globalization пространство имен) например

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

    float f = 0.479f;

    Console.WriteLine(f.ToString("p1",myNewFormat));
2
ответ дан 3 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: