2012-10-13 6 views

Antwort

8

Sie wollen auf ein Vielfaches von 0,5 runden? Verstehe ich das richtig?

double RoundUpToPointFive(double d) 
{ 
    return Math.Ceiling(d * 2)/2; 
} 
+0

Ich denke, das sollte es tun. –

+0

Dies fasziniert mich, gefunden, dass die 2 gefunden wird, indem Sie 100/50 tun, weil 50 ist die Hälfte von 100, die das gleiche wie .5 ist. Könnte hilfreich sein, wenn Sie das Verhalten der Rundung zu 0,1 ändern möchten, indem Sie 100/10 tun. – Rob

+0

ya .. es funktioniert .. Danke Yaar .. – Prasad

3

Die schnelle und schmutzige Art und Weise:

mit 2 multiplizieren, die Decke und durch 2 teilen Schnell und einfach zu verstehen, aber dies wird aufgrund Zahlenüberlauf kant Fällen fehlschlagen.

Eine robustere Methode besteht darin, vor der Dezimalstelle alles abzuschliessen, bevor Sie die Runde mit der obigen Methode auswerten, und das Ergebnis zur ganzen Zahl hinzuzufügen, die Sie abgeschnitten haben.

0

Davids Methode versiegelt es ziemlich, aber hier ist ein anderer längerer Weg.

double dbNum = 3.44; 
double dbNumModified = 3.44 + 0.5; 
dbNumModified = Math.Floor(dbNum); 
if(dbNumModified < dbNum) 
{ 
    dbNumModified += 0.5; 
} 
return dbNumModified; 
+0

Funktioniert nicht für 3.0 ... Sie müssen '<=' – nbrooks