web-dev-qa-db-fra.com

Javascript: arrondir au prochain multiple de 5

J'ai besoin d'une fonction utilitaire qui prend une valeur entière (allant de 2 à 5 chiffres) qui arrondit le multiple suivant de 5 au lieu du multiple le plus proche de 5 eu:

function round5(x)
{
    return (x % 5) >= 2.5 ? parseInt(x / 5) * 5 + 5 : parseInt(x / 5) * 5;
}

Quand je lance round5(32), il me donne 30, où je veux 35.
Lorsque je lance round5(37), il me donne 35, où je veux 40. 

Quand je lance round5(132), il me donne 130, où je veux 135.
Lorsque je lance round5(137), il me donne 135, où je veux 140. 

etc...

Comment puis-je faire cela?

73
Amit Erandole

Cela fera le travail:

function round5(x)
{
    return Math.ceil(x/5)*5;
}

C'est juste une variation de l'arrondi commun number au plus proche multiple de x fonction Math.round(number/x)*x, mais utiliser .ceil au lieu de .round fait qu'il soit toujours arrondi au lieu de haut/bas selon les règles mathématiques.

188
pawel

Comme ça?

function roundup5(x) { return (x%5)?x-x%5+5:x }
4

Je suis arrivé ici en cherchant quelque chose de similaire… Si mon numéro est —0, —1, —2, il devrait être fixé à —0 et s'il est —3, —4, —5, il devrait être limité à —5.

Je suis venu avec cette solution:

function round(x) { return x%5<3 ? (x%5===0 ? x : Math.floor(x/5)*5) : Math.ceil(x/5)*5 }

Et les tests:

for (var x=40; x<51; x++) {
  console.log(x+"=>", x%5<3 ? (x%5===0 ? x : Math.floor(x/5)*5) : Math.ceil(x/5)*5)
}
// 40 => 40
// 41 => 40
// 42 => 40
// 43 => 45
// 44 => 45
// 45 => 45
// 46 => 45
// 47 => 45
// 48 => 50
// 49 => 50
// 50 => 50
4
AymKdn
voici 2 solutions possibles :
y= (x % 10==0) ? x : x-x%5 +5; //......... 15 => 20 ; 37 => 40 ;  41 => 45 ; 20 => 20 ; 

z= (x % 5==0) ? x : x-x%5 +5;  //......... 15 => 15 ; 37 => 40 ;  41 => 45 ; 20 => 20 ;

Cordialement Paul 

2
Paul Neulat
const fn = _num =>{
    return Math.round(_num)+ (5 -(Math.round(_num)%5))
}

la raison d'utiliser round est que l'entrée attendue peut être un nombre aléatoire.

Merci!!!

0
Parit

// arrondir avec précision

var round = function (value, precision) {
    return Math.round(value * Math.pow(10, precision)) / Math.pow(10, precision);
};

// arrondis à 5 avec précision

var round5 = (value, precision) => {
    return round(value * 2, precision) / 2;
}
0
Dennis T