Feedback

C# - Alternatives Runden

Veröffentlicht von am 03.12.2014
(0 Bewertungen)
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;
        }
Abgelegt unter double, Runden.

2 Kommentare zum Snippet

Koopakiller schrieb am 05.12.2014:
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.
Fuzzi59 schrieb am 05.12.2014:
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.
 

Logge dich ein, um hier zu kommentieren!