Das .Net Framework enthält in den standardmäßigen Zahlenformatzeichenfolgen
für das Anzeigen von Zahlen in wissenschaftlicher Notation (exponentiell),
nur den Formatbezeichner "E"/"e" bereit.
Dieses entspricht der scientific notation.
Gerade im technischen Bereich wird jedoch eher ein Bezug
auf SI-Symboleinheiten benötigt.
Folgendes Beispiel dazu.
0.0006
ergibt mit double.ToString("E") = 6,000000E-004
für die "richtige" SI-Darstellung wir 600E-6 benötigt.
Mit dieser Methode ist dies nun einfach möglich.
public static string ConvertToEngineering(double d)
{
string pattern = "#.##E0";
if(d.Equals(0))
return d.ToString(pattern);
int Exponent = (int)Math.Floor(Math.Log10(Math.Abs(d)));
switch (Exponent % 3)
{
case 1:
case -2:
pattern = "##.##E0";
break;
case 2:
case -1:
pattern = "###.##E0";
break;
}
return d.ToString(pattern);
}
Kommentare zum Snippet