Feedback

double in engineering notation darstellen

Sprache: C#

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);
    } 
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);
    }