Feedback

C# - Runden vor dem Komma

Veröffentlicht von am 14.11.2015
(0 Bewertungen)
Analog zu Math.Round übergibt man bei dieser Methode eine numerische Zahl mit der Anzahl der Stellen, die VOR dem Komma gerundet werden sollen. Um z.B. den nächsten Zehnerwert von 316 zu finden, übergibt man 1, für Hunderter 2 usw.


overround(316) // 316
overround(316, 1) // 320
overround(316, 2) // 300
overround(316, 3) // 0
overround(501, 0) // 501
overround(501, 1) // 500
overround(501, 2) // 500
overround(501, 3) // 1000
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

public static int overround(object input, int length = 0)
{
    if (input is int | input is double | input is decimal | input is float)
    {
        double value = Convert.ToDouble(input);
        int div = (int)Math.Pow(10, length);
        return ((int)Math.Round(value / div, 0) * div);
    }
    throw new ArgumentException("Input is not numeric");
}
Abgelegt unter Math.

1 Kommentare zum Snippet

Koopakiller schrieb am 14.11.2015:
Und was ist mit Byte, Short und Long sowie deren jeweiligen U/S-Versionen?

Ich würde verschiedene Überladungen für jeden Typ schreiben, da eben nicht alles gleich funktioniert. Beispielsweise könnte man mit einem Großen Dezimal arbeiten und deine Methode würde fehlerhaft runden, da Double weniger genau ist. Das ist das ewige Problem der vielen Zahlen-Typen.

Wenigstens solltest du jedoch verlangen das input IConvertible implementiert. Am besten über die Einschränkung eines generischen Typs.
 

Logge dich ein, um hier zu kommentieren!