Feedback

Alternatives Runden

Sprache: C#

Mit dieser Funktion kann ein double alternativ gerundet werden, sodass bspw. erst ab 7 aufgerundet wird. Zahl ist die zu rundende Zahl Stelle gibt an, auf welche Stelle hinter (>=1) oder vor (<=0) dem Komma gerundet werden soll. startUp gibt an, ab wann aufgerundet werden soll.
public static double RoundAt(double Zahl, int Stelle, int startUp)
        {
            double Up = Math.Abs(Zahl) * Math.Pow(10, Stelle);
            double temp = Up;
            double Out;
            while (Up > 0)
            {
                Up--;
            }
            Out = temp - Up;                           //Aufrunden
            if (Up < (Convert.ToDouble(startUp) - 10) / 10)
            { Out = temp - Up - 1; }                   //Abrunden
            if (Zahl < 0)
            { Out *= -1; }
            Out /= Math.Pow(10, Stelle);
            return Out;
        }
public static double RoundAt(double Zahl, int Stelle, int startUp)
        {
            double Up = Math.Abs(Zahl) * Math.Pow(10, Stelle);
            double temp = Up;
            double Out;
            while (Up > 0)
            {
                Up--;
            }
            Out = temp - Up;                           //Aufrunden
            if (Up < (Convert.ToDouble(startUp) - 10) / 10)
            { Out = temp - Up - 1; }                   //Abrunden
            if (Zahl < 0)
            { Out *= -1; }
            Out /= Math.Pow(10, Stelle);
            return Out;
        }

2 Kommentare

  1. Wenn ich dein Snippet richtig interpretiere, dann veränderst du den Punkt, ab dem auf- bzw. abgerundet wird. Bei RoundAt(*, 1, 7) würde also alles ab *.7 aufgerundet werden, alles andere wird abgerundet.
    Richtig?

    Wenn ich dem Stelle-Parameter 0 übergebe, würde ich erwarten ganze Zahlen (1,2,3,4,…) zu erhalten. Ich erhalte aber auf 10er gerundete.

  2. Stimmt, es lag an der Kommaverschiebung das -1 musste weg damit es funktioniert.
    Außerdem konnten keine negativen Zahlen richtig gerundet werden.
    Hatte es aus der alten Datei kopiert, ist jetzt aber richtig.