Feedback

C# - Kaufmännisch Runden auf 0.05 (Schweizer Norm)

Veröffentlicht von am 25.10.2012
(2 Bewertungen)
Runden auf 0.05 (Schweizer Norm).

Die Funktion ist als Erweiterungsmethode auf dem Typ Decimal implementiert. Für kaufmännische Anwendungen sollte man Fliesskomma-Typen wie Double vermeiden und immer mit Decimal arbeiten.

Die Arbeitsweise der Funktion ist folgende:
0.325 ergibt 0.35
0.324 ergibt 0.30 und funktioniert auch mit negativen Zahlen.

Beispiel:
decimal d = 0.325;
Console.Write(d.SwissCommercialRound())


Ausgabe:
0.35
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

public static decimal SwissCommercialRound(this decimal input)
{
   return Math.Round(input * 20.0M, MidpointRounding.AwayFromZero) * 0.05M;
}

Abgelegt unter Runden, kaufmännisch Runden, Schweiz.

4 Kommentare zum Snippet

Ralf Schoch schrieb am 25.10.2012:
Vielleicht habe ich einen Denkfehler, aber meiner Meinung nach falsch.
Beim kaufmänischen Runden sollte folgendes rauskommen:
0.325 ergibt 0.33
0.324 ergibt 0.32

siehe auch
http://de.wikipedia.org/wiki/Rundung#Kaufm.C3.A4nnisches_Runden

Da Du auf 0.05 rundest (und diese Verhalten wohl auch haben möchtest) sollte es ggf. nicht "CommercialRound" heissen,
sondern einen Namen haben der auf dieses abweichende Verhalten auch hinweisst.
dotnetlab schrieb am 25.10.2012:
Ok, ich habe vergessen darauf hinzuweisen, dass es sich hier um schweizerischen Standard handelt.
Jakob Lis schrieb am 26.10.2012:
das heißt dann Rappenrundung.
dotnetlab schrieb am 27.10.2012:
@Ralf Schoch
Danke für die Hinweise. Ich habe den Artikel dahingehend angepasst
 

Logge dich ein, um hier zu kommentieren!