Tengo que mostrar calificaciones y para eso necesito incrementos de la siguiente manera:
Si el número es 1.0 debería ser igual a 1
Si el número es 1.1 debería ser igual a 1
Si el número es 1.2 debería ser igual a 1
Si el número es 1.3 debería ser igual a 1.5
Si el número es 1.4 debería ser igual a 1.5
Si el número es 1.5 debe ser igual a 1.5
Si el número es 1.6 debe ser igual a 1.5
Si el número es 1.7 debe ser igual a 1.5
Si el número es 1.8 debe ser igual a 2.0
Si el número es 1.9 debe ser igual a 2.0
Si el número es 2.0 debe ser igual a 2.0
Si el número es 2.1 debe ser igual a 2.0
y así sucesivamente ...
¿Existe una forma sencilla de calcular los valores requeridos?
Respuestas:
Multiplique su calificación por 2, luego redondee usando
Math.Round(rating, MidpointRounding.AwayFromZero)
, luego divida ese valor por 2.Math.Round(value * 2, MidpointRounding.AwayFromZero) / 2
fuente
Multiplica por 2, redondea y luego divide por 2
si quiere el cuarto más cercano, multiplique por 4, divida por 4, etc.
fuente
Aquí hay un par de métodos que escribí que siempre se redondearán hacia arriba o hacia abajo a cualquier valor.
fuente
Hay varias opciones. Si el rendimiento es un problema, pruébelos para ver cuál funciona más rápido en un ciclo grande.
fuente
fuente
Parece que necesitas redondear al 0,5 más cercano. No veo ninguna versión de
round
en la API de C # que haga esto (una versión requiere un número de dígitos decimales para redondear, que no es lo mismo).Suponiendo que solo tiene que lidiar con números enteros de décimas, es suficiente para calcular
round (num * 2) / 2
. Si está utilizando decimales arbitrariamente precisos, se vuelve más complicado. Esperemos que no.fuente
También tuve dificultades con este problema. Yo codifico principalmente en Actionscript 3.0 que es codificación base para la plataforma Adobe Flash, pero hay simularidades en los idiomas:
La solución que se me ocurrió es la siguiente:
Eso es practicamente todo. Tenga en cuenta el uso de 'números' y 'enteros' y la forma en que se procesan.
¡Buena suerte!
fuente
fuente
La forma correcta de hacer esto es:
fuente