Preciso de uma função de utilidade que receba um valor inteiro (variando de 2 a 5 dígitos de comprimento) que arredonde para o próximo múltiplo de 5 em vez do próximo múltiplo de 5. Aqui está o que consegui:
function round5(x)
{
return (x % 5) >= 2.5 ? parseInt(x / 5) * 5 + 5 : parseInt(x / 5) * 5;
}
Quando eu corro round5(32)
, ele me dá 30
onde eu quero 35.
Quando eu corro round5(37)
, ele me dá 35
onde eu quero 40.
Quando eu corro round5(132)
, ele me dá 130
onde eu quero 135.
Quando eu corro round5(137)
, ele me dá 135
onde eu quero 140.
etc ...
Como eu faço isso?
javascript
math
rounding
Amit Erandole
fonte
fonte
round5(5)
dar 5 ou 10?Respostas:
Isso fará o trabalho:
É apenas uma variação do arredondamento comum
number
para o múltiplo dex
função mais próximoMath.round(number/x)*x
, mas usar em.ceil
vez de.round
faz com que ele sempre arredonde para cima em vez de para baixo / para cima de acordo com as regras matemáticas.fonte
const roundToNearestMultipleOf = m => n => Math.round(n/m)*m
Uso:roundToNearestMultipleOf(5)(32)
Isso arredondará o número para o 5 mais próximo. Para arredondar sempre para o 5 mais próximo, use
Math.ceil
. Da mesma forma, para sempre arredondar para baixo, use emMath.floor
vez deMath.round
. Você pode então chamar esta função como faria com qualquer outra. Por exemplo,retornará:
fonte
Como isso?
fonte
Cheguei aqui enquanto procurava algo semelhante. Se o meu número for —0, —1, —2, deve ser de —0, e se for —3, —4, —5 deve atingir —5.
Eu encontrei esta solução:
E os testes:
fonte
Math.round
Atenciosamente Paul
fonte
// arredondar com precisão
// arredondar para 5 com precisão
fonte
A razão para usar round é que a entrada esperada pode ser um número aleatório.
Obrigado!!!
fonte
talvez?
fonte
int
não está definido. Talvez você quisesseparseInt
, mas isso não seria necessário, poisMath.floor
retorna um número.