百分比值的格式小数?

时间:2009-11-24 15:54:28

标签: c# decimal string.format formatprovider

我想要的是这样的:

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

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

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

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

6 个答案:

答案 0 :(得分:390)

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

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

答案 1 :(得分:9)

如果您有充分的理由放弃依赖于文化的格式并明确控制值与“%”之间是否存在空格,以及“%”是否为前导或尾随,则可以使用NumberFormatInfo的PercentPositivePatternPercentNegativePattern属性。

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

echo "<link rel="stylesheet" href="/templates/purity_iii/css/custom_gps.css" type="text/css" />";

更完整的例子:

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

答案 2 :(得分:3)

设置您的文化和“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("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%”

“P1:72.9%”

“P3:72.949%”

答案 3 :(得分:1)

如果您想使用一种格式,让您可以像输入实体一样保留此数字,则该格式对我有用: try: mediafile = eyed3.load(song) if mediafile: ... extract tag else: ... log not recognized file format except IOError: .... log Exception

答案 4 :(得分:0)

此代码可以为您提供帮助:

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

答案 5 :(得分:-8)

我发现上述答案是最佳解决方案,但我不喜欢百分号之前的领先空间。我已经看到了一些复杂的解决方案,但我只是使用此替换添加到上面的答案而不是使用其他舍入解决方案。

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