Почему стандартный числовой формат для процентов содержит пробел? - PullRequest
9 голосов
/ 05 февраля 2009

История прошлого

У меня есть некоторые десятичные значения, которые я отображаю в виде строк на веб-странице как часть более крупной строки. Я начал с использования строки стандартного числового формата для вывода этого. Э.Г.

myDecimal.ToString("P0")

0 после P говорит, что я не хочу десятичных знаков. Это работает, насколько это возможно, в том, что мой выходной сигнал в конечном итоге выглядит примерно так:

Рассчитано, как указано выше, на основе поэтапной минимальной ставки взноса Компании в размере 2%

Космическая проблема

Я действительно хочу избавиться от этого промежутка между числом и знаком процента, так как в некоторых случаях он заканчивается разбиением на строки. А также, я предпочитаю, чтобы% встало до числа.

Возможные обходные пути

1. HTML / CSS решение

Я мог бы поставить тег <nobr> или <span style="white-space: nowrap;"> вокруг него. Но это кажется неловким, и в любом случае я предпочитаю, чтобы% встало прямо до числа, поскольку я думаю, что это выглядит лучше. Это то, как мы пишем это в отчетах на этой лесной гуще, поэтому я так хочу на веб-странице.

2. Пользовательский формат строки

Я собираюсь использовать строку с числовым форматом, например,

myDecimal.ToString("0%")

Вопрос

Чаще ли показывать проценты с пробелом между числом и знаком процента? Это удивило бы меня, но могло бы быть.

Есть ли способ указать Строка стандартного числового формата Мне не нужен пробел?

Есть ли какой-либо недостаток в использовании пользовательской строки числового формата по сравнению с стандартной строки числового формата ?

Хорошо - я признаю, что это было больше, чем один вопрос - Дополнительный кредит, если вы ответите на них все.

Ответы [ 3 ]

5 голосов
/ 03 декабря 2013

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

System.Globalization.CultureInfo  newCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.NumberFormat.PercentPositivePattern = 1;  // Avoid putting a space between a number and its percentage
System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;
5 голосов
/ 05 февраля 2009

Глядя на http://www.nasdaq.com/ или http://finance.yahoo.com/, кажется, что знак процента сразу после числа без пробела является общим:)

Взгляните на http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspx

Вероятно, это зависит от культуры, по умолчанию (инвариант) n%

2 голосов
/ 28 марта 2009

Чтобы изменить значение PercentPositivePattern по умолчанию, необходимо создать новый объект CultureInfo и использовать его вместо значения по умолчанию, которое, вероятно, является «en-us». (В качестве альтернативы вы можете указать "en-za" в качестве культуры в вашем файле Web.config, но я не рекомендую этого по понятным причинам.)

На форумах ASP есть отличный пост, объясняющий, как все это сделать. Смотрите код, написанный третьим автором (m0brien). Я скопировал его точный код в метод Page_Load моей главной страницы, чтобы мне больше не приходилось об этом думать.

Конечно, вы всегда можете просто использовать String.Format (). Replace ("", String.Empty), но вам придется делать это на всем сайте. Плюс, если честно, где в этом удовольствие, когда ты можешь засучить рукава и поиграть со своими глобализационными ценностями ???

...