格式百分比值的小数?

我想要的是这样的:

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

其中%%是格式提供者或任何我正在寻找。 应该结果: Value: %85.26.

我基本上需要它的wpf绑定,但首先让我们来解决一般的格式问题:

 <TextBlock Text="{Binding Percent, StringFormat=%%}" /> 

使用P格式string 。 这将因文化而异:

 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) 

我发现上面的答案是最好的解决scheme,但我不喜欢百分号前的前导空格。 我已经看到了一些复杂的解决scheme,但我只是使用这个替代以上的答案,而不是使用其他舍入解决scheme。

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