2010-05-19 94 views

Respuesta

7

Math.Round es lo que estás buscando. Si eres nuevo en el redondeo en .NET, también deberías consultar el difference entre AwayFromZero y ToEven redondeo. El valor predeterminado de ToEven en algún momento puede tomar a la gente por sorpresa.

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

ah..yeahh ... THX – leonita

1

Math.Round(), según lo sugerido por los demás, es probablemente lo que quiere. Pero el texto de su pregunta específicamente preguntó cómo "redondear" [sic]. Si siempre hay que redondear hacia arriba, regarless del valor real (es decir: 2.561111 todavía iría a 2,57), se puede hacer esto:

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

Si desea redondeo normal, sólo puede utilizar el método Math.Round. Si specifially desea redondear hacia arriba, se utiliza el Math.Ceiling método:

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

No entiendo por qué las personas están recomendando el código incorrecto a continuación:

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

El código correcto para redondear debe ser similar esto:

Dim r As Double = Math.Ceiling(d) 
  1. Math.Ceiling trabaja con datos de tipo double (no decimal).
  2. El * 100D/100D es incorrecto. Se romperán los resultados para números más grandes.
  3. documentación Math.Ceiling se encuentra aquí: http://msdn.microsoft.com/en-us/library/zx4t0t48.aspx
+1

Math.Ceiling tiene dos sobrecargas; uno para decimal y uno para doble. –

+0

el único punto que no sé si es cierto o no es el punto 2 que usted hace. tal vez podría proporcionar y ejemplo? los otros 2 puntos que hace (1 y 3) son incorrectos. aquí está la documentación math.ceiling en su nivel más alto, que mostrará 2 sobrecargas: http://msdn.microsoft.com/en-us/library/System.Math.Ceiling(v=vs.110).aspx –

+0

Mientras Math.Ceiling puede tomar decimal o double, siempre devuelve _ "Devuelve la integral más pequeña" _ (del documento que enlaza). OP específicamente solicita el redondeo a dos decimales. Entonces quieren un decimal/doble, no un entero. Entonces Math.Ceiling no funcionará solo – Adam

0

La función básica para el redondeo es Math.Ceiling (d), pero el autor de la pregunta específicamente quería reunir después de la segunda cifra decimal. Esto sería Math.Ceiling (d * 100)/100. Por ejemplo, puede multiplicar 46.5671 por 100 para obtener 4656.71, luego redondea para obtener 4657, luego se divide por 100 para desplazar el decimal 2 lugares hacia atrás para obtener 46.57.

9

Aquí es cómo lo hago:

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

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

End Function 
1

utilicé esta manera:

Math.Round(d + 0.49D, 2) 
Cuestiones relacionadas