1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/// <summary>
/// Rundet kaufmännisch auf die Anzahl der übergebenen Nachkommastellen
///
/// Achtung: Seit .NET 2.0 gibt es folgende Überladung die dieses Snippet hinfällig machen: Math.Round(3.65m,1,MidpointRounding.AwayFromZero)
/// </summary>
/// <param name="value">Zu rundender Wert</param>
/// <param name="dec">Anzahl der Nachkommastellen</param>
/// <returns>Gerundeter Wert</returns>
public static decimal CommercialRound(decimal value, int dec)
{
// um die Anzahl der Dezimalstellen nach links verschieben
decimal x = value * Convert.ToDecimal(Math.Pow(10, dec));
// Dezimalstellen abtrennen
decimal y = Math.Floor(x);
// ist die Differenz größer oder gleich 0.5 soll aufgerundet werden
if ((x-y) >= 0.5m) y++;
// um die Anzahl der Dezimalstellen nach rechts verschieben
return y / Convert.ToDecimal(Math.Pow(10, dec));
}
|