Feedback

Kaufmännisches Runden

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; 
} 

3 Kommentare

  1. 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.

  2. Also im Compactframework gibt es die von Yellow beschriebene Funktion leider nicht.
    Daher ist dieses Snipped keineswegs überflüssig.