百分比值的格式小数?

Shi*_*mmy 198 c# string.format decimal formatprovider

我想要的是这样的:

String.Format("Value: {0:%%}.", 0.8526)
Run Code Online (Sandbox Code Playgroud)

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

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

<TextBlock Text="{Binding Percent, StringFormat=%%}" />
Run Code Online (Sandbox Code Playgroud)

Mic*_*ren 407

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

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

  • [看这里的巨大差异就像美国和法国类型。](http://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx) 如果上述内容因文化而异,则是否存在与文化无关的“P”格式? (2认同)
  • @bonCodigo:如果要特定文化的输出,请显式指定文化。 (2认同)

小智 12

设置您的文化和“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));
Run Code Online (Sandbox Code Playgroud)

输出:

“P02:72.95%”

“P01:72.9%”

“P:72.95%”

“P0:72%”

“P1:72.9%”

“P3:72.949%”


Jon*_*der 9

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

例如,要获取带有尾随"%"的十进制值,并且值与"%"之间没有空格:

myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });
Run Code Online (Sandbox Code Playgroud)

更完整的例子:

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)
Run Code Online (Sandbox Code Playgroud)


Nit*_*pra 7

这段代码可以帮助你:

double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";
Run Code Online (Sandbox Code Playgroud)


Moo*_*oon 6

有一种简单且与文化无关的方法:只需使用“%”自定义说明符并手动控制符号位置。 https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SpecifierPct

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

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

string.Format("{0:%000}", 0.6493072393590115)
// outputs %065
Run Code Online (Sandbox Code Playgroud)


小智 5

如果你想使用一种允许你像条目一样保留数字的格式,这种格式对我有用: "# \\%"