How can I use a percent % in FormatString without it multiplying by 100?
I would like to format an integer as a percent without it multi开发者_运维知识库plying by 100 as shown here. Because my source is an int, dividing it first by 100 is not a valid option. Is this possible?
[DisplayFormat(DataFormatString = "{0:#%}")]
You can escape the %
character:
[DisplayFormat(DataFormatString = @"{0:#\%}")]
Note that there are two ways to use \
as an escape character: if you prefix a string literal with the verbatim symbol (@
), then \
characters are included in the string as-is, which means that as part of a format string a single \
will function as an escape character.
Without the @
verbatim symbol, \
s are interpreted as escape strings by the compiler and as such need to be escaped themselves, as \\
.
Pick one or the other, but not both:
@"{0:#\%}" -> right
"{0:#\\%}" -> right
@"{0:#\\%}" -> wrong
Put the % outside the {0:..}
[DisplayFormat(DataFormatString = "{0:0.00}%")]
From your linked page:
\ Escape character
Causes the next character to be interpreted as a literal rather than as a custom format specifier.
[DisplayFormat(DataFormatString = "{0:#\\%}")]
If the value is 0, the format @"{0:#%}" displays just a %. It should display 0%. So the correct format is
[DisplayFormat(DataFormatString = @"{0:#0\%}")]
There is an extra zero after the hash.
精彩评论