Frage

Die Hintergrundgeschichte

Ich habe einige Dezimal-Werte, die ich als Zeichenfolge auf einer Webseite als Teil einer größeren Zeichenfolge am anzeigt. Ich begann diese mit einem Standard Numerisch Format String Ausgang aus. Z.

myDecimal.ToString("P0")

Die 0 nach dem P sagt es ich will keine Dezimalstellen. Das funktioniert so weit wie es geht, dass meine ouput Ende sieht so etwas wie:

  

, wie oben auf der Grundlage der Phased Mindest Gesellschaft Beitragssatz von 2% berechnet

Das Space Problem

Ich mag wirklich diesen Raum zwischen der Zahl und dem Prozentzeichen, um loszuwerden, wie es in manchen Fällen Spaltung über die Leitungen endet. Und auch, ziehe ich das% die Anzahl an Hintern.

Mögliche Abhilfen

1. HTML / CSS-Lösung

Ich könnte einen <nobr>-Tag oder ein <span style="white-space: nowrap;"> um es ausdrückte. Aber das fühlt sich ungeschickt, und trotzdem ziehe ich den% Recht auf Hintern bis zu der Zahl, wie ich denke, es sieht besser aus. Es ist, wie wir es in den Berichten in diesem Hals der Wälder schreiben würden, so ist es, wie ich es auf der Webseite will.

2. Benutzerdefinierte Format-String

Ich werde eine benutzerdefinierte Zahlenformat String am Ende mit, z.

myDecimal.ToString("0%")

Die Frage

Ist es häufiger zwischen der Zahl und dem Prozentzeichen mit einem Raum Prozent angezeigt werden? Dies würde überrascht mich, aber es könnte sein.

Gibt es eine Möglichkeit, die Standard Numeric Format String zu sagen, ich den Raum nicht will?

Gibt es einen Nachteil, ein Benutzerdefinierte Zahlenformat String über Standard Numeric Format String mit

Ok - ich gebe es zu, das war mehr als eine Frage -. Extra Credit, wenn Sie beantworten sie alle

War es hilfreich?

Lösung

Mit Blick auf http://www.nasdaq.com/ oder http: // msdn. microsoft.com/en-us/library/system.globalization.numberformatinfo.percentpositivepattern.aspx

Es hängt wahrscheinlich von Kultur, die Standardeinstellung (invariant) beeing n%

Andere Tipps

Das funktioniert für mich:

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;

Um den Standard PercentPositivePattern Wert zu ändern, müssen Sie ein neues Objekt erstellen und Culture es anstelle des Standard verwenden, die wahrscheinlich „en-us“ ist. (Alternativ können Sie auch „en-za“, wie die Kultur in Web.config angeben, aber ich, dass aus offensichtlichen Gründen nicht empfehlen.)

Es gibt einen großen Beitrag zu dem ASP Forum erklären, wie all dies zu tun . Siehe den Code durch das dritte Plakat geschrieben (m0brien). Ich kopierte seinen genauen Code in meine Masterseite der Page_Load-Methode, so dass ich es nicht mehr denken.

Natürlich könnte man immer nur tun String.Format (). Ersetzen (““, String.Empty), aber Sie würden auf Ihrer Website zu tun haben, dass. Plus, ehrlich, wo ist der Spaß, dass, wenn Sie könnten Ihre Ärmel hochkrempeln und spielen Sie mit Ihrer Globalisierung Wert ???

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top