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]

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

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!