如何在没有乘以100的情况下在FormatString中使用百分比%?

Kei*_*ler 41 c# format-string

我想格式化一个整数作为百分率,而没有如图它乘以100 在这里.因为我的源是一个int,所以先将它除以100不是一个有效的选项.这可能吗?

[DisplayFormat(DataFormatString = "{0:#%}")]
Run Code Online (Sandbox Code Playgroud)

Dan*_*Tao 60

你可以逃脱%角色:

[DisplayFormat(DataFormatString = @"{0:#\%}")]
Run Code Online (Sandbox Code Playgroud)

请注意,有两种方法可以\用作转义字符:如果使用逐字符号(@)为字符串文字添加前缀,则\字符串按原样包含在字符串中,这意味着作为格式字符串的一部分,单个 \函数将起作用作为逃避角色.

如果没有@逐字符号,编译器\会将s解释为转义字符串,因此需要自行转义\\.

选择一个或另一个,但不是两个:

@"{0:#\%}"  -> right
"{0:#\\%}"  -> right
@"{0:#\\%}" -> wrong
Run Code Online (Sandbox Code Playgroud)

  • 问题可能在于您现在已经失去了对格式的文化意识 (2认同)

小智 32

把%放在{0:..}之外

[DisplayFormat(DataFormatString = "{0:0.00}%")]
Run Code Online (Sandbox Code Playgroud)

  • @cadmium它没有被投票更高,因为你不能直接在自定义数字格式字符串上使用它.我的意思是`ToString()`这样的方法不允许`{}`表达式,而只能在上面的解决方案中提供`{0:`和`}`之间的格式部分.但是,像`String.Format()`这样的方法是可以的. (3认同)
  • 这确实是最简单的解决方案,不确定为什么它不会被投票更高. (2认同)
  • 我认为这不是一个好答案。如果您的价值不存在怎么办?您将在自己的字段中得到一个孤独的%char。 (2认同)

rur*_*uni 6

从您的链接页面:

\逃脱角色

导致下一个字符被解释为文字而不是自定义格式说明符.

[DisplayFormat(DataFormatString = "{0:#\\%}")]
Run Code Online (Sandbox Code Playgroud)