2010-02-08 18 views
5

Mögliche Duplizieren:
c# - How do I round a decimal value to 2 decimal places (for output on a page)runde Dezimalwerte bis auf 0,01?

How to round decimal value up to nearest 0.05 value??, die SO auch verlinkten Beitrag diskutiert die ähnlichen Thema, aber es ist nicht der Ausgang i erwartet.

Ich brauche die Dezimalwerte wie diese

16.489-->16.49 
16.482-->16.48 
16.425-->16.43 
7.67 --> 7.67 (no conversion) 

I die unter C# Methode können Sie wandeln die Werte

Math.Round(16.482*20)/20; 

Aber diese Methode nicht funktioniert für mich zu konvertieren, ist es das gibt folgende Ergebnisse

16.489-->16.5 
16.482-->16.5 
7.67 --> 7.7 
16.425-->16.45 

was ist der elegante Weg in C#, dies zu tun.

Antwort

14

Math..::.Round Method (Decimal, Int32, MidpointRounding)

Runden ein doppelter Genauigkeit Gleitkommawert auf die angegebene Anzahl von Nachkommastellen. Ein Parameter gibt an, wie der Wert gerundet wird, wenn er sich in der Mitte zwischen zwei anderen Zahlen befindet.

Math.Round(1.489,2,MidpointRounding.AwayFromZero) 
+0

Was ist, wenn Sie auf das nächste Quartal runden möchten? also 1.489 Runden auf 1.5, aber 1.479 Runden auf 1.475? – Anthony

+0

Math.Round (1.479,2, MidpointRounding.AwayFromZero) rund um 1.48 – Fredou

+0

@Fredou, es funktioniert gut .. danke ... – RameshVel

2

Haben Sie versucht,

Math.Round(16.482*200)/200; 
+0

Es gibt keinen saubereren Weg, dies zu tun? –

+0

Ich habe keine Ahnung, ich weiß nicht C#. Ich weiß nur, wie der Beispielcode funktioniert. Es multipliziert einfach die Zahl mit der Umkehrung der Stelle, die Sie runden möchten, und teilt diese Summe dann mit der gleichen Umkehrung, um zur gleichen Zahl zurückzukehren. Sie können die gleiche Idee verwenden, um zum nächsten Viertel zu kommen (so habe ich diesen Trick gelernt). – Anthony

+0

Sie könnten eine Funktion erstellen, die Sie den Wert und was Sie abrunden möchten, aber da die SO nicht zu erkennen, dass er auf .005 abgerundet werden möchte, bin ich mir nicht sicher, dass das hilfreich gewesen wäre vorschlagen. – Anthony