Вопрос

Я хочу что-то вроде этого:

String.Format("Value: {0:%%}.", 0.8526)

Где %% — это поставщик формата или что-то еще, что я ищу.Должно получиться: Value: %85.26..

В основном мне это нужно для привязки wpf, но сначала давайте решим общую проблему форматирования:

<TextBlock Text="{Binding Percent, StringFormat=%%}" />
Это было полезно?

Решение

Использовать P строка формата.Это зависит от культуры:

String.Format("Value: {0:P2}.", 0.8526) // formats as 85.26 % (varies by culture)

Другие советы

Если у вас есть веская причина отказаться от форматирования, зависящего от языка и региональных параметров, и получить явный контроль над тем, есть ли пробел между значением и «%», а также является ли «%» ведущим или конечным, вы можете использовать NumberFormatInfo. ПроцентПозитивныйШаблон и ПроцентОтрицательныйШаблон характеристики.

Например, чтобы получить десятичное значение с завершающим «%» и без пробела между значением и «%»:

myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });

Более полный пример:

using System.Globalization; 

...

decimal myValue = -0.123m;
NumberFormatInfo percentageFormat = new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 };
string formattedValue = myValue.ToString("P2", percentageFormat); // "-12.30%" (in en-us)

Если вы хотите использовать формат, который позволяет вам сохранять номер как вашу запись, этот формат подойдет мне:"# \\%"

Этот код может помочь вам:

double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";

Я нашел приведенный выше ответ лучшим решением, но мне не нравится пробел перед знаком процента.Я видел несколько сложные решения, но я просто использую это дополнение «Заменить» к ответу выше вместо использования других решений округления.

String.Format("Value: {0:P2}.", 0.8526).Replace(" %","%") // formats as 85.26% (varies by culture)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top