2010-11-19 4 views

Antwort

7

Sie Folgendes tun können:

var rounded = Math.Floor(13.608000 * 100)/100; 

Beachten Sie, dass Math.Floor() rundet auf die nächste ganze Zahl, daher die Notwendigkeit zu multiplizieren, abrunden und dann teilen.

-1

Math.Round Funktion sollte es tun, http://msdn.microsoft.com/en-us/library/zy06z30k.aspx

+0

Das Verhalten dieser Methode folgt dem IEEE-Standard 754, Abschnitt 4. Diese Art der Rundung wird manchmal als Rundung zum nächsten bezeichnet. Frage nach Rundung ** nach unten **. –

+0

Nicht ganz, weil es nicht immer abgerundet wird. – BoltClock

+0

Das ist wahr. Ich habe die 8 in der Frage für eine Null falsch gelesen. – Jason

0

Zum Abrunden verwenden Sie Math.Floor. Um auf einen anderen Faktor als 1,0 zu runden, multiplizieren Sie vor dem Aufruf von Floor und teilen Sie danach.

double x = 0.01 * Math.Floor(100 * y); 
-1

Umgehung:

decimal x = 13.6080001; 
int places = 2; 
int result = (int)(Math.Round(x - (0.5 * Math.Pow(10, 0 - places), places))); 
7

Hier ist ein direkter Anschluss der Excel-Funktion für variable Anzahl von Dezimalstellen

public double RoundDown(double number, int decimalPlaces) 
{ 
    return Math.Floor(number * Math.Pow(10, decimalPlaces))/Math.Pow(10, decimalPlaces); 
} 

z.B. Rounddown (13.608000,2) = 13.60, Rounddown (12345, -3) = 12000,

+0

Das funktioniert GROSS !!! –

2

Hier ist die richtige Lösung:

double RoundDown(double value, int digits) 
    { 
     if (value >= 0) 
      return Math.Floor(value * Math.Pow(10, digits))/Math.Pow(10, digits); 

     return Math.Ceiling(value * Math.Pow(10, digits))/Math.Pow(10, digits); 
    } 

RichardW1001 Antwort ist fast richtig, er hat einfach nicht für das Runden-Konto von negativen Werten.

+0

Dies funktioniert nicht auf die gleiche Weise wie RoundDown in Excel, das Werte auf Null zu runden scheint, z. -2.55 wird -2, diese Funktion wird -2,55 bis -3 runden. – Pones

Verwandte Themen