Feedback

C# - double in engineering notation darstellen

Veröffentlicht von am 25.10.2006
(8 Bewertungen)
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

 

Logge dich ein, um hier zu kommentieren!