Necesita MidpointRounding.AwayFromZerosi desea redondear un valor de .5. Desafortunadamente, este no es el comportamiento predeterminado de Math.Round(). Si utiliza MidpointRounding.ToEven(el valor predeterminado), el valor se redondea al número par más cercano ( 1.5se redondea a 2, pero 2.5también se redondea a 2).
¿Es su de todos modos redondear 137,5 a 140 no a 138? Me refiero a redondear a la décima más cercana.
sam
7
Necesitas Math.Round, no Math.Ceiling. Ceilingsiempre "redondea" hacia arriba, mientras que Roundredondea hacia arriba o hacia abajo según el valor después del punto decimal.
Todavía parece sospechoso. En primer lugar, la pregunta se refiere a redondear hacia arriba y en segundo lugar, cuando lo probé hace un momento, la implementación predeterminada de Math.Round (1.5) rondas a 2. Así que esto puede no ser lo que quería.
ver
Además, su ejemplo mezcla el punto decimal con la coma decimal. ¿Cuál usas normalmente (en Suecia, supongo)? :)
ver
Ups ... oh sí, lo siento. en la programación del punto decimal, por supuesto, pero en el texto formal usamos la coma decimal. y sí, suecia ^^ sobre la pregunta y la parte de "redondeo": creo que es solo un error de lenguaje. en los ejemplos dados por op, algunos números decimales se redondean hacia abajo.
Davogotland
@Siempre que no redondeo con Math.Round, lo hago con un yeso. es por eso que esta manera es manual y un poco linda;)
davogotland
5
Puede usar Math.Round como otros han sugerido (recomendado), o puede agregar 0.5 y convertir a un int (que eliminará la parte decimal).
Estaba buscando esto, pero mi ejemplo fue tomar un número, como 4.2769 y colocarlo en un intervalo como solo 4.3. No es exactamente lo mismo, pero si esto ayuda:
Model.Statistics.AverageReview<= it's just a double from the model
Luego:
@Model.Statistics.AverageReview.ToString("n1")<=gives me 4.3@Model.Statistics.AverageReview.ToString("n2")<=gives me 4.28
Respuestas:
Consulte la documentación oficial para obtener más información. Por ejemplo:
Básicamente le das al
Math.Round
método tres parámetros.Código de muestra:
Demo en vivo
Necesita
MidpointRounding.AwayFromZero
si desea redondear un valor de .5. Desafortunadamente, este no es el comportamiento predeterminado deMath.Round()
. Si utilizaMidpointRounding.ToEven
(el valor predeterminado), el valor se redondea al número par más cercano (1.5
se redondea a2
, pero2.5
también se redondea a2
).fuente
away from zero
también significa que-1.5
redondeará a-2
.siempre redondea (hacia el techo)
siempre redondea hacia abajo (hacia el suelo)
lo que buscas es simplemente
que rondas según esta publicación
fuente
Necesitas
Math.Round
, noMath.Ceiling
.Ceiling
siempre "redondea" hacia arriba, mientras queRound
redondea hacia arriba o hacia abajo según el valor después del punto decimal.fuente
hay este manual, y también una forma un poco linda:
simplemente agregue 0.5 a cualquier número, y échelo a int (o al piso) y se redondeará matemáticamente correctamente: D
fuente
Puede usar Math.Round como otros han sugerido (recomendado), o puede agregar 0.5 y convertir a un int (que eliminará la parte decimal).
fuente
Simplemente un recordatorio. Cuidado con el doble.
fuente
Tienes la función Math.Round que hace exactamente lo que quieres.
fuente
1.5
con el valor? Necesita más parámetros.esto se redondeará al 5 más cercano o no cambiará si ya es divisible por 5
fuente
Estaba buscando esto, pero mi ejemplo fue tomar un número, como 4.2769 y colocarlo en un intervalo como solo 4.3. No es exactamente lo mismo, pero si esto ayuda:
Luego:
etc ...
fuente
Utilizar
Math.Round
:fuente
Dará resultado:
fuente
Si trabaja con números enteros en lugar de números de punto flotante, este es el camino.
Aquí tanto "numr" como "denr" son enteros sin signo.
fuente
Usar
Math.Round(number)
redondea al número entero más cercano.fuente
Escribe tu propio método circular. Algo como,
function round(x) rx = Math.ceil(x) if (rx - x <= .000001) return int(rx) else return int(x) end
fuente
fuente