Почему спецификатор формата в процентах умножается на 100?

Почему формат строки p для процентов умножает значение на 100, прежде чем форматировать его со знаком процента?

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#PFormatString

Спецификатор формата процентов ("P")

Спецификатор формата процента ("P") умножает число на 100 и преобразует его в строку, представляющую процент. Спецификатор точности указывает желаемое количество десятичных знаков. Если спецификатор точности опущен, используется точность чисел по умолчанию, предоставляемая текущим свойством PercentDecimalDigits.

Есть ли способ предотвратить умножение значения на 100 перед форматированием? Вместо того, чтобы делать:

(value / 100).ToString("p")

Ответ 1

Что касается того, почему "процент" буквально означает "из ста", то 50% математически эквивалентно 0.50. Что касается форматирования, почему бы просто не добавить знак процента?

value + "%"

... или что-то вроде этого:

value.ToString("#.00\\%")

Ответ 2

Обычно вы работаете с десятичными процентами внутри кода, например 0.5 и 1.0, но пользователю нравится видеть красивые целые числа с признаком процента, прикрепленным к концу.

Процент означает "из 100" и, очевидно, ваши десятичные проценты выходят из 1. Поэтому .ToString("p") умножает ваш номер на 100, а затем добавляет знак процента.

Это просто определение.

Ответ 3

Если вы не хотите умножать значение на 100, просто хотите получить процент% помимо введенного значения, то есть VALUE.00%, если значение введено иначе, по умолчанию 0,00%, тогда ответ

PERCENTAGE_FORMAT = "# 0.00 \%";

Это определенно сработало для меня!