I would like to format an integer as a percent without it multiplying 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:#%}")]
I would like to format an integer as a percent without it multiplying 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
[DisplayFormat(DataFormatString = @"{0:#0.##\%}")]
–
Awhile Put the % outside the {0:..}
[DisplayFormat(DataFormatString = "{0:0.00}%")]
ToString()
will not allow the { }
expression, rather you can only provide the format part that is between {0:
and }
in the above solution. Methods like String.Format()
are okay, however. –
Ovate 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.
© 2022 - 2024 — McMap. All rights reserved.