2016-04-12 4 views
-3

Double.ToString auf einer sehr großen Zahl gibt normalerweise nur eine Anzahl von signifikanten Ziffern zurück, gefolgt von der Exponentennotation mit einer Zehnerpotenz. BigInteger tut dies jedoch nicht und gibt einfach alle Ziffern der Nummer zurück.BigInteger.ToString in wissenschaftlicher Notation (d. H. Mit E)

Wie kann ich sagen, dass es nur im wissenschaftlichen Format ausgeben soll wie double anstelle der vollen Zahl? Ich kann es nicht in doppelt konvertieren, weil es größer ist als Double.MaxValue. Ich könnte eine Formatierungsfunktion selbst erstellen, aber ich wäre glücklicher, wenn es eine integrierte Funktion gäbe, die alle Kulturen berücksichtigt.

+2

Ist die Format-String „E“ arbeiten nicht für BigInteger? – Baldrick

+0

https://msdn.microsoft.com/en-us/library/dd268260(v=vs.110).aspx –

+0

@Baldrick Ich wusste, die Antwort wäre einfach. Vielen Dank. – IllidanS4

Antwort

3

Sie sollten einfach in der Lage sein, entlang der BigInteger.ToString() Methode zu verwenden, mit der expected Exponential formatting string E wissenschaftliche Schreibweise zu handhaben:

var input = BigInteger.Parse("12498124912841982142441242424421"); 
var output = input.ToString("E"); // yields "1.249812E+031" 
4

Wie die meisten ToString Methoden, BigInteger.ToString können Sie eine Format-String weitergeben müssen:

var myString = myBigInteger.ToString("E"); // yields exponential notation 

finden Sie in der folgenden MSDN-Seite für eine detaillierte Beschreibung der integrierte numerische Format-Strings in .NET verfügbar:

Beachten Sie, dass Sie mit der Exponential Format Specifier einen optionalen präzisen-Spezifizierer angeben können.