¿Por qué el Formato Numérico Estándar de los porcentajes de incluir un espacio?

StackOverflow https://stackoverflow.com/questions/516549

  •  21-08-2019
  •  | 
  •  

Pregunta

La Historia De Fondo

Tengo algunos valores decimales que estoy mostrando como cadenas de caracteres en una página web como parte de una gran cadena.Empecé usando una Cadena de Formato Numérico Estándar para la salida de este.E. g.

myDecimal.ToString("P0")

El 0 después de la P dice que me quiere sin decimales.Esto funciona como va, en que mi salida de la señal termina buscando algo como:

Calculado como el anterior, basado en la fase de mínimo de la Compañía de la tasa de contribución del 2 %

El Problema Del Espacio

Yo realmente quiere deshacerse de de que el espacio entre el número y el signo de porcentaje ya que en algunos casos termina dividiendo a través de las líneas.Y también, yo prefiero el % a tope para el número.

Posibles Soluciones

1.html / css solución

Yo podría poner un <nobr> etiqueta o un <span style="white-space: nowrap;"> alrededor de ella.Pero, que se siente incómodo, y de todos modos yo prefiero el % a tope a la derecha hasta el número como creo que se ve mejor.Es cómo nos iba a escribir en los informes en este cuello de los bosques, así es cómo quiero que en la página web.

2.Cadena de formato personalizado

Voy a terminar usando una Cadena de Formato Numérico Personalizado, E. g.

myDecimal.ToString("0%")

La Pregunta

Es más común para mostrar porcentajes con un espacio entre el número y el signo de porcentaje?Esto me sorprendería, pero podría ser.

Hay una manera de decirle a la Cadena De Formato Numérico Estándar No quiero que el espacio?

¿Hay alguna desventaja para el uso de un Cadena De Formato Numérico Personalizado más de un Cadena De Formato Numérico Estándar?

Ok, lo admito, que era más que una pregunta - Crédito Adicional si usted responder a todos ellos.

¿Fue útil?

Solución

En cuanto a http://www.nasdaq.com/ o http://finance.yahoo.com/ parece que el signo de porcentaje justo después de la serie, sin espacio entre medio es común:)

Tener un vistazo a http: // MSDN. microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspx

Probablemente depende de la cultura, el valor predeterminado (invariante) beeing n%

Otros consejos

Esto funcionó para mí:

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 cambiar el valor por defecto PercentPositivePattern, debe crear un nuevo objeto CultureInfo y usarlo en lugar del predeterminado, que es probablemente "en-us". (Como alternativa, puede especificar "en-za" como la cultura en su Web.config, pero yo no recomiendo que por razones obvias.)

Hay un gran post sobre los ASP foros explicando cómo hacer todo esto . Ver el código escrito por el tercer cartel (m0brien). He copiado su código exacto en el método Page_Load de mi página principal, de modo que yo no tengo que pensar más en ello.

Por supuesto, siempre se puede simplemente no (). Reemplazar String.Format ("", String.Empty), pero usted tiene que hacer que a través de su sitio. Además, honestamente, ¿dónde está la diversión en eso cuando se podía subirse las mangas y jugar con sus valores de globalización ???

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top