Tenho que exibir as avaliações e, para isso, preciso dos seguintes incrementos:
Se o número for 1,0 deve ser igual a 1
Se o número for 1,1 deve ser igual a 1
Se o número for 1,2 deve ser igual a 1
Se o número for 1,3 deve ser igual a 1,5
Se o número for 1,4 deve ser igual a 1.5
Se o número for 1.5 deve ser igual a 1.5
Se o número for 1.6 deve ser igual a 1.5
Se o número for 1.7 deve ser igual a 1.5
Se o número for 1.8 deve ser igual a 2.0
Se o número for 1.9 deve ser igual a 2.0
Se o número for 2.0 deve ser igual a 2.0
Se o número for 2.1 deve ser igual a 2.0
e assim por diante ...
Existe uma maneira simples de calcular os valores necessários?
Respostas:
Multiplique sua classificação por 2, arredonde usando e
Math.Round(rating, MidpointRounding.AwayFromZero)
, em seguida, divida esse valor por 2.Math.Round(value * 2, MidpointRounding.AwayFromZero) / 2
fonte
Multiplique por 2, arredonde e depois divida por 2
se você quiser o quarto mais próximo, multiplique por 4, divida por 4, etc.
fonte
Aqui estão alguns métodos que escrevi que sempre arredondarão para cima ou para baixo para qualquer valor.
fonte
Existem várias opções. Se o desempenho for uma preocupação, teste-os para ver qual funciona mais rápido em um grande loop.
fonte
fonte
Parece que você precisa arredondar para o 0,5 mais próximo. Não vejo nenhuma versão
round
na API C # que faça isso (uma versão leva um número de dígitos decimais para arredondar, o que não é a mesma coisa).Supondo que você só precise lidar com números inteiros de décimos, é suficiente calcular
round (num * 2) / 2
. Se você estiver usando decimais arbitrariamente precisos, fica mais complicado. Esperemos que não.fonte
Eu também tive dificuldade com esse problema. Eu codifico principalmente em Actionscript 3.0, que é a codificação base para a plataforma Adobe Flash, mas existem semelhanças nas linguagens:
A solução que encontrei é a seguinte:
É basicamente isso. Observe o uso de 'Números' e 'Inteiros' e a maneira como são processados.
Boa sorte!
fonte
fonte
A maneira correta de fazer isso é:
fonte