2012-03-17 3 views
14

У меня есть техническая проблема с использованием процента в методе StringFormat.Процент в StringFormat

Результат String.Format("{0:P}", 0.8526) является 85.26%

, но я думаю, что это должно быть 0.8526%

Является ли это правильно? Если да, то как я могу получить 0.8526%?

+4

String.Format ("{0}%", 0,8526) – Steve

ответ

17

Console.WriteLine(string.Format("{0}%", 0.8526));

12

Да математически 0,8526 равен 85,26%. Если вам нужно получить 0.8526%, то попробуйте этот

String.Format("{0:P}", 0.8526/100) 
+0

Я хочу использовать DataFormatString в сетке. как я могу реализовать разделение там? – Mironline

+0

В вашем случае вам даже не нужно делиться. если вам нужно '0.8526' как' 0.8526% ', то почему вы не добавляете'% 'к числу? '" 0.8526% "= 0.8526.ToString() +"% "'. Помогает ли это? – Kaf

+4

-1 Зачем делиться и умножаться на ту же сумму? Просто введите {0}% –

2

String.Format будет умножить на 100, при использовании% или: р String.Format Вы должны разделить на 100, если вы хотите, чтобы получить то, что вы ищете.

+3

-1 Зачем делиться и умножаться на ту же сумму? Просто введите {0}% –

+6

@Chris, потому что String.Format учтет правила текущей культуры для форматирования процентного значения, а {0}% жестко кодируется стандарту US-EN. –

+0

Это похоже на жесткое кодирование определенной культуры, но не на самом деле. Двойной формат будет отформатирован неявно с использованием спецификатора формата G. Игнорируя символ процента целиком, спецификатор формата G форматирует цифры, отличные от P, в первую очередь, сколько десятичных знаков отображается по умолчанию. Вы должны просто прочитать о G и P на https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx. – user1676558

2

Процент в процентах от 0 до 100% и соответствующий номер плавающего указателя от 0.0 до 1.0, поскольку это соотношение между двумя числами.