2009-10-05 29 views
12

Sto cercando di capire come arrotondare alla posizione decimo più vicina con C#. Ad esempio, ho un valore che è di tipo double. Questo doppio è attualmente impostato a 10,75. Tuttavia, ho bisogno di arrotondare e poi troncare tutto oltre la posizione dei decimi. In questo caso, sto cercando un valore di 10.8. Come faccio a arrotondare alla posizione dei decimi in C#?C# - Math.Round

Grazie!

+2

Dato che ovviamente sai di math.round, sembra che in qualche modo non funzioni per te. Puoi mostrare ciò che hai provato e spiegare come è diverso da quello che ti aspettavi? –

risposta

28
Math.Round(yourNumber, 1) 

Il secondo parametro è il numero di posizioni decimali da arrotondare a. Nel tuo caso vuoi 1 decimale come risultato finale.

13

È sufficiente utilizzare lo overload of Math.Round che utilizza il parametro decimals.

Math.Round(10.75, 1) // returns 10.8 

Proprio per il confronto:

Math.Round(10.75) // returns 11 
Math.Round(10.75, 0) // returns 11 
Math.Round(10.75, 2) // returns 10.75 
4

Avete veramente bisogno di arrotondare, o si può semplicemente formattarlo per la stampa, ma consentono la variabile stessa di tenere la sua precisione? Qualcosa di simile:

decimal value = 10.75; 
value.ToString ("#.#"); 
5

Dal momento che si è utilizzato Math.Round() nel titolo, ho intenzione di assumere hai già provato l'approccio di base Math.Round(10.75,1) e restituisce qualcosa che non ti aspetti. Con questo in mente, vi suggerisco di guardare alcuni dei diversi sovraccarichi per la funzione, in particolare uno che accetta un MidPointRounding enum:

http://msdn.microsoft.com/en-us/library/f5898377.aspx

2

Se si desidera solo per "tagliare" tutto dopo il primo decimale, questo shoudl work:

return Math.Round(value * 10)/10 
Problemi correlati