2013-02-25 5 views
5

Ich möchte einen double Wert in eine string analysieren. Ich möchte, dass meine Nummer eine bestimmte Anzahl von Ziffern hat (die ich bis zur Laufzeit nicht kenne). Wenn diese Zahl mit einem von Null verschiedenen Wert in Anzahl von Stellen ausgedrückt werden kann, ist das was ich will. Wenn die Zahl als Nullen erscheint, möchte ich, dass sie in wissenschaftlicher Notation ausgedrückt wird.Verwenden Sie nur bei Bedarf wissenschaftliche Notation

Einige Beispiele dies deutlicher machen, dies setzt voraus, ich 3 Stellen gesucht:

Wert: 0,2367 Ausgang: "0,23"

Wert: 0,00367 Ausgang: "3.67E-3"

Wert: 22,3 Ausgabe: "22.3"

Wert: 3.364,0 Ausgang: "3.36E3"

Meine Arbeit um Lösung der ToString() Methode verwenden würde und die Nnumeric format string und wenn es in Null führt uns zum E Format-String zurückkommen, aber das fühlt sich an, als würde man das Rad neu erfinden. Weiß jemand, ob eine eingebaute Methode das macht?

+2

Würden Sie wollen nicht 2.37E-1 für die erste? –

+0

Eigentlich wäre meine Präferenz, nur die wissenschaftliche Notation zu verwenden, wenn alle Werte 0 wären, aber jeder Weg würde ausreichen. – Fr33dan

Antwort

14

Haben Sie sich die General Number Format Specifier angesehen?

den allgemeinen („G“) Formatbezeich wandelt eine Nummer der Preßkörpers aus entweder fest-Punkt oder wissenschaftliche Notation, abhängig von der Art der der Anzahl und ob eine Genauigkeitsangabe vorhanden ist.

Einige Beispiele aus der Dokumentation:

double number; 

number = .0023; 
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture)); 
// Displays 0.0023 

number = 1234; 
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture)); 
// Displays 1.2E+03 

number = Math.PI; 
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture)); 
// Displays 3.1416 
+0

Ich weiß nicht, wie ich das in der Dokumentation übersehen habe. – Fr33dan