Feedback

C# - Kaufmännisches Runden

Veröffentlicht von am 29.11.2006
(4 Bewertungen)
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; 
} 

Abgelegt unter Runden, kaufmännisch.

3 Kommentare zum Snippet

Rainbird schrieb am 08.12.2006:
Double ist für Geldbeträge ungeeignet (Fließkommatypen "rauschen"). Man sollte immer decimal verwenden!
Yellow schrieb am 10.12.2006:
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.

Aebi Michael schrieb am 25.09.2009:
Also im Compactframework gibt es die von Yellow beschriebene Funktion leider nicht.
Daher ist dieses Snipped keineswegs überflüssig.
 

Logge dich ein, um hier zu kommentieren!