百分比值的十进制格式?

我想要的是这样的:

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

其中%%是格式提供程序或我正在寻找的任何东西。 Value: %85.26..

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

<TextBlock Text="{Binding Percent, StringFormat=%%}" />
238147 次浏览

使用P格式字符串。这因文化而异:

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

如果你有很好的理由抛开依赖于区域性的格式,并显式控制值和“%”之间是否有空格,以及“%”是前导还是后置,你可以使用NumberFormatInfo的PercentPositivePatternPercentNegativePattern属性。

例如,要获得一个尾随“%”且值与“%”之间没有空格的十进制值:

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)

我发现上面的答案是最好的解决方案,但我不喜欢百分号前的前导空格。我见过一些复杂的解决方案,但我只是使用这个替换加法的答案,而不是使用其他舍入解决方案。

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

如果你想使用一种格式,让你可以像你的条目一样保留数字,这种格式适合我: "# \\%" < / p >

这段代码可以帮助你:

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

设定你的文化"P"字符串格式。

CultureInfo ci = new CultureInfo("en-us");
double floating = 72.948615;


Console.WriteLine("P02: {0}", (floating/100).ToString("P02", ci));
Console.WriteLine("P01: {0}", (floating/100).ToString("P01", ci));
Console.WriteLine("P: {0}", (floating/100).ToString("P", ci));
Console.WriteLine("P0: {0}", (floating/100).ToString("P0", ci));
Console.WriteLine("P1: {0}", (floating/100).ToString("P1", ci));
Console.WriteLine("P3: {0}", (floating/100).ToString("P3", ci));

输出:

““P02: 72.95%;

““P01: 72.9%;

““P: 72.95%;

““P0: 72%;

““P1: 72.9%;

““P3: 72.949%;

你也可以用"%"自定义说明符和手动控制标志位置。 https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SpecifierPct < / p >

格式字符串中的百分号(%)会使数字在格式化之前乘以100。本地化的百分比符号被插入到数字中%在格式字符串中出现的位置。

string.Format("{0:0.0%}", 0.6493072393590115)
// outputs 64.9%


string.Format("{0:%000}", 0.6493072393590115)
// outputs %065