2016-05-26 4 views
3

Ich möchte doppelte Werte mit einer festen Anzahl von vier Dezimalstellen formatieren. Was ich will:.net: Was ist die richtige Formatzeichenfolge für eine feste Anzahl von Dezimalstellen, aber "x.xxE + xxx" für große Zahlen?

  • „Small“ Zahlen sollten im Ganzen angezeigt werden, das heißt, sollte 1234,56789 als 1234,5679
  • „Large“ Zahlen angezeigt werden, sollte ich in Exponentialnotation

angezeigt bin nicht der Lage, beide zu erreichen:

(1234.56789).ToString("F4", CultureInfo.InvariantCulture) 

ergibt:

1234.5679 
Aber

:

(123456789123456789.123456789).ToString("F4", CultureInfo.InvariantCulture) 

ergibt:

1234567891234567000.0000 

Mit G4 Ausbeuten 1.235E+17 für die große Zahl und 1235 für die kleinen.

Ich habe auch "E4" und "e4" ohne ein gutes Ergebnis versucht.

Also, welches Format sollte ich verwenden, um das gleiche Verhalten wie für das Standardformat zu erreichen, d. H. Wenn keine Standardzeichenfolge verwendet wird, aber die Dezimalstellen auf vier reduziert werden? Es kann nicht sein, dass ich gezwungen bin, zu tun String Hacking oder müssen „ifs“ zu überprüfen, ob die Zahl in einem bestimmten Bereich ist ...

+0

Verwenden Sie den Rückgabewert von Math.Log10 (Wert), ob Sie wie "F4" oder "E" entscheiden. –

Antwort

0

Verwenden G8 es wird Ihnen das Ergebnis wollen Sie

(1234.56789).ToString("G8", CultureInfo.InvariantCulture) 

Ausgabe: 1234,5679

(123456789123456789.123456789).ToString("G8", CultureInfo.InvariantCulture) 

Ausgang: 1.2345679E + 17

+0

Nein, wenn ich dies auf 1.23456789 anwende, bekomme ich 1,2345679 anstelle von 1,2346. Ich möchte immer vier Dezimalstellen haben. – rabejens