2016-07-15 13 views
0

Wie kann ich eine Zahl in wissenschaftliche Notation umwandeln und den Exponenten erhalten? Zum Beispiel, wenn ich 23582 habe und es in 2,3582 x 10^4 umwandeln will und dann die '4' bekommen soll, was ist die Reihenfolge der Zahl? (Ich bin mit C#)Nummer in wissenschaftliche Notation konvertieren und Exponent erhalten

+0

Dies ist die [log] (https://msdn.microsoft.com/en-us/library/system.math.log10 (v = vs.110) nur nehmen. aspx) (Basis 10) der Nummer. –

+0

Wie wäre es mit dem ersten Lesen: https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx und kombinieren Sie es mit "string.Split" und "int.Parse" –

Antwort

1

Beachten Sie, dass das Ergebnis für den Fall negativ sein kann die Zahl weniger als 1 so verwenden wir Math.Floor, dass zu behandeln:

int exponent = num == 0 ? 0 : (int)Math.Floor((Math.Log10(Math.Abs(num)))); 
+1

' Math.Abs ​​(num) 'innerhalb des Logarithmus; Vergessen Sie nicht 'num == 0' Fall –

+0

@DmitryBychenko Danke, dass Sie darauf hingewiesen haben. – user3185569

2

Verwenden Sie einfach Logarithmus:

int exponent = value == 0 
    ? 0 // special case: technically it should be -infinity 
    : (int) Math.Floor(Math.Log10(Math.Abs(value))); 
+0

I glaube nicht, dass dies Nummern behandelt, die kleiner als 1 sind. zB '0.2' – user3185569

+0

@ user3185569: du hast recht; 'Math.Floor' oder ähnlich ist erforderlich –

0

Sie können die unten Notation,

int number = 23582; 
      Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture)); 

Ausgang ist,

2.4E+04 
Verwandte Themen