Pergunta

The Back História

Eu tenho alguns valores decimais que estou mostrando como strings em uma página web como parte de uma cadeia maior. Comecei usando uma seqüência de formato numérico padrão para a saída deste. Por exemplo.

myDecimal.ToString("P0")

O 0 após a P diz que eu quero sem casas decimais. Isso funciona como medida em que vai, em que minhas extremidades ouput acima de olhar algo como:

Calculado como acima com base na taxa mínima faseada contribuição Company de 2%

O problema de espaço

Eu realmente quer se livrar desse espaço entre o número e o sinal de porcentagem como em alguns casos, ele acaba divisão em todas as linhas. E também, eu prefiro o% a intrometer-se ao número.

soluções possíveis

1. html solução / css

Eu poderia colocar uma etiqueta <nobr> ou um <span style="white-space: nowrap;"> em torno dele. Mas, que se sente estranho, e mesmo assim eu prefiro o% a bunda até o número que eu acho que fica melhor. É como nós iria escrevê-lo em relatórios nesta pescoço do bosque, por isso é como eu quero-o na página web.

2. formato personalizado

Eu vou acabar usando uma seqüência de formato numérico personalizado, por exemplo.

myDecimal.ToString("0%")

A Pergunta

É mais comum para exibir porcentagens com um espaço entre o número e o sinal de porcentagem? Isso me surpreende, mas poderia ser.

Existe uma maneira de dizer o Numeric padrão de formato de cadeia eu não quero o espaço?

Existe alguma desvantagem de usar um Custom Numeric Format string ao longo de um formato numérico padrão de Cordas ?

Ok - Eu admito, que era mais do que uma pergunta - Crédito Extra se você responder a todas elas

.

Foi útil?

Solução

Olhando para http://www.nasdaq.com/ ou http://finance.yahoo.com/ parece que o direito sinal de porcentagem após o número sem inbetween espaço é comum:)

Tenha um olhar em http: // MSDN. microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspx

Provavelmente depende da cultura, o padrão (invariantes) beeing n%

Outras dicas

Isso funcionou para mim:

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;

Para alterar o valor PercentPositivePattern padrão, você deve criar um novo objeto CultureInfo e usá-lo em vez do padrão, que é, provavelmente, "en-us". (Alternativamente, você pode especificar "en-za" como a cultura em sua Web.config, mas eu não recomendo que, por razões óbvias.)

Há um ótimo post sobre os ASP Fóruns explicando como fazer tudo isso . Veja o código escrito pelo terceiro cartaz (m0brien). Copiei o seu código exato em método Page_Load da minha página principal, de modo que eu não tenho que pensar mais no assunto.

Claro, você sempre pode apenas fazer String.Format (). Substituir ("", String.Empty), mas você tem que fazer isso em todo o site. Além disso, honestamente, onde está a diversão em que quando você pode arregaçar as mangas e brincar com seus valores de globalização ???

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top