Sprache: C#
Rundet (kaufmännisch) d auf n Stellen hinter dem Komma
public double Runde(double d, int n)
{
int buffer;
// d = d * 1000 bei n = 2;
d *= Math.Pow (10, n+1);
// in integer umwandeln
buffer = Convert.ToInt32 (d);
if (buffer % 10 >= 5) d = (Math.Ceiling(d/10)) / Math.Pow (10, n);
else d = (Math.Floor(d/10)) / Math.Pow (10, n);
return d;
}
public double Runde(double d, int n)
{
int buffer;
// d = d * 1000 bei n = 2;
d *= Math.Pow (10, n+1);
// in integer umwandeln
buffer = Convert.ToInt32 (d);
if (buffer % 10 >= 5) d = (Math.Ceiling(d/10)) / Math.Pow (10, n);
else d = (Math.Floor(d/10)) / Math.Pow (10, n);
return d;
}
Alte URL:
/snippet/kaufmaennisches-runden/346
Double ist für Geldbeträge ungeeignet (Fließkommatypen „rauschen“). Man sollte immer decimal verwenden!
Dieses Snippet ist für .NET 2.0 überflüssig. Seit .NET 2.0 gibt es eine Überladung, so dass das Framework das von Haus aus kann.
3,7 = Math.Round(Convert.ToDecimal(„3,65“),1,MidpointRounding.AwayFromZero));
…wurde allerdings auch erst von BlackDragon darauf aufmerksam gemacht.
Also im Compactframework gibt es die von Yellow beschriebene Funktion leider nicht.
Daher ist dieses Snipped keineswegs überflüssig.