Ответ 1
Используйте строку P
. Это зависит от культуры:
String.Format("Value: {0:P2}.", 0.8526) // formats as 85.26 % (varies by culture)
Я хочу что-то вроде этого:
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 PercentPositivePattern и Свойства PercentNegativePattern.
Например, чтобы получить десятичное значение с конечным "%" и без пробела между значением и "%":
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) + "%";
Я нашел ответ выше, чтобы быть лучшим решением, но мне не нравится ведущее пространство перед знаком процента. Я видел несколько сложных решений, но я просто использую это дополнение Replace для ответа выше, вместо использования других решений округления.
String.Format("Value: {0:P2}.", 0.8526).Replace(" %","%") // formats as 85.26% (varies by culture)