2010-05-19 15 views

risposta

7

Math.Round è quello che stai cercando. Se sei nuovo all'arrotondamento in .NET, dovresti anche cercare lo difference tra l'arrotondamento AwayFromZero e lo ToEven. L'impostazione predefinita di ToEven può talvolta sorprendere le persone.

dim result = Math.Round(2.56666666, 2) 
+0

ah..yeahh ... thx – leonita

1

Math.Round(), come suggerito da altri, è probabilmente quello che vuoi. Ma il testo della tua domanda ha chiesto in particolare come "arrotondare" [sic]. Se avete sempre bisogno di arrotondare, regarless di valore reale (es: 2,561,111 mila sarebbero ancora andare a 2.57), si può fare questo:

Math.Ceiling(d * 100)/100D 
11

Se si vuole l'arrotondamento regolare, si può semplicemente utilizzare il metodo Math.Round. Se si specifially desidera arrotondare verso l'alto, si utilizza il metodo Math.Ceiling:

Dim d As Decimal = 2.566666 
Dim r As Decimal = Math.Ceiling(d * 100D)/100D 
-1

Non capisco perché le persone sono raccomandando il codice errato di seguito:

Dim r As Decimal = Math.Ceiling(d * 100D)/100D 

Il codice corretto per arrotondare dovrebbe essere simile questo:

Dim r As Double = Math.Ceiling(d) 
  1. Math.Ceiling lavora con i dati di tipo double (non decimale).
  2. Il * 100D/100D non è corretto interromperà i risultati per numeri più grandi.
  3. documentazione Math.Ceiling si trova qui: http://msdn.microsoft.com/en-us/library/zx4t0t48.aspx
+1

Math.Ceiling ha due overload; uno per i decimali e uno per il doppio. –

+0

l'unico punto che non so è vero o no è il punto 2 che fai. forse potresti fornire ed esempio? gli altri 2 punti che fai (1 e 3) non sono corretti. Ecco la documentazione di Math.ceiling al suo livello più alto, che mostrerà 2 overload: http://msdn.microsoft.com/en-us/library/System.Math.Ceiling(v=vs.110).aspx –

+0

While Math.Ceiling può assumere decimali o raddoppiare sempre restituisce _ "Restituisce l'integrale più piccolo" _ (dai documenti che colleghi). L'OP chiede espressamente l'arrotondamento a due cifre decimali. Quindi vogliono un decimale/doppio indietro, non un intero. Quindi Math.Ceiling non funzionerà da solo – Adam

0

La funzione di base di arrotondamento è Math.Ceiling (d), ma il richiedente specificamente voluto arrotondare dopo il secondo decimale. Questo sarebbe Math.Ceiling (d * 100)/100. Ad esempio può moltiplicare 46.5671 per 100 per ottenere 4656.71, quindi arrotonda per ottenere 4657, quindi divide per 100 per spostare il decimale indietro di 2 posizioni per ottenere 46.57.

9

Ecco come lo faccio:

Private Function RoundUp(value As Double, decimals As Integer) As Double 

    Return Math.Ceiling(value * (10^decimals))/(10^decimals) 

End Function 
1

ho usato in questo modo:

Math.Round(d + 0.49D, 2)