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?
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.
Comme ça?
function roundup5(x) { return (x%5)?x-x%5+5:x }
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
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
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!!!
// 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;
}