Десятичный формат для процентных значений?
-
22-09-2019 - |
Вопрос
Я хочу что-то вроде этого:
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)