Почему спецификатор формата в процентах умножается на 100? - PullRequest
17 голосов
/ 15 ноября 2011

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

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

Процент («P») Спецификатор формата

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

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

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

Ответы [ 3 ]

20 голосов
/ 15 ноября 2011

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

value + "%"

... или как-то так:

value.ToString("#.00\\%")
5 голосов
/ 15 ноября 2011

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

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

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

1 голос
/ 08 июня 2015

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

PERCENTAGE_FORMAT = "# 0,00 \%";

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

...