Perché il formato standard numerico per percentuali includono uno spazio?
-
21-08-2019 - |
Domanda
The Back Story
Ho alcuni valori decimali che io sono la visualizzazione sotto forma di stringhe in una pagina web come parte di una stringa più grande. Ho cominciato con un standard Numerico Stringa formato di uscita questo. Per es.
myDecimal.ToString("P0")
Il 0
dopo la P
dice che voglio senza decimali. Questo funziona per quanto va, in che il mio ouput finisce per guardare qualcosa di simile:
Il problema di spaziocalcolato come sopra in base al tasso di contribuzione minima Impresa graduale del 2%
Ho molta voglia di sbarazzarsi di quello spazio tra il numero e il segno di percentuale come in alcuni casi si finisce per dividere attraverso le linee. E inoltre, io preferisco il% intromettermi fino al numero.
Possibili Soluzioni alternative
1. html / css soluzione ho potuto mettere un tag o un <nobr>
<span style="white-space: nowrap;">
intorno ad esso. Ma, che si sente a disagio, e comunque preferisco l'% intromettermi destra fino al numero come penso che un aspetto migliore. E 'come avremmo scriverlo nei rapporti in questo collo dei boschi, quindi è come lo voglio sulla pagina web.
Ho intenzione di finire con una stringa di formato personalizzato numerico, per es.
myDecimal.ToString("0%")
La questione
E 'più comune per visualizzare le percentuali con uno spazio tra il numero e il segno di percentuale? Questo mi sorprenderebbe, ma potrebbe essere.
C'è un modo per dire al standard numerico stringa di formato Non voglio lo spazio?
C'è qualche svantaggio di utilizzare un Custom numerico stringa di formato per un standard numerico stringa di formato
Ok - l'ammetto, che è stato più di una domanda -. Extra Credit se tutti rispondere
Soluzione
http://www.nasdaq.com/ o http://finance.yahoo.com/ sembra che il segno di percentuale a destra dopo il numero senza spazi inbetween è comune:)
Dai un'occhiata alla http: // MSDN. microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspx
Probabilmente dipende dalla cultura, il valore predefinito (invariante) beeing n%
Altri suggerimenti
Questo ha funzionato per me:
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;
Per modificare il valore predefinito PercentPositivePattern, è necessario creare un nuovo oggetto CultureInfo e utilizzarlo al posto del default, che è probabilmente "it-IT". (In alternativa, è possibile specificare "en-za" come la cultura nel web.config, ma io non raccomandare che per ovvie ragioni).
C'è un grande post sulle ASP Forum che spiega come fare tutto questo . Vedere il codice scritto dal terzo manifesto (m0brien). Ho copiato il suo codice esatto in metodo Page_Load della mia pagina master, in modo che io non devo pensarci più.
Naturalmente, si può sempre e solo non String.Format (). Sostituire ("", String.Empty), ma che avrei dovuto farlo in tutto il sito. In più, onestamente, dove sta il divertimento che quando si poteva rimboccarsi le maniche e giocare con i tuoi valori di globalizzazione ???