119 votes

Numéro d'arrondi Javascript au 0,5 le plus proche

Quelqu'un peut-il me dire comment arrondir un nombre au 0,5 le plus proche. Je dois mettre à l'échelle les éléments d'une page Web en fonction de la résolution de l'écran et pour cela, je ne peux attribuer une taille de police en pts qu'à 1, 1,5 ou 2 et au-delà, etc.

Si j'arrondis, il arrondit soit à 1 décimale, soit à aucune. Comment puis-je accomplir ce travail?

232voto

newtron Points 2241

Écrivez votre propre fonction qui multiplie par 2, arrondit, puis divise par 2, par exemple

 function roundHalf(num) {
    return Math.round(num*2)/2;
}

98voto

Michael Deal Points 490

Voici une solution plus générique qui peut vous être utile :

 function round(value, step) {
    step || (step = 1.0);
    var inv = 1.0 / step;
    return Math.round(value * inv) / inv;
}

round(2.74, 0.1) = 2,7

round(2.74, 0.25) = 2,75

round(2.74, 0.5) = 2,5

round(2.74, 1.0) = 3.0

5voto

Ronan Stoffers Points 31

Pour étendre la réponse supérieure par newtron pour arrondir sur plus de seulement 0,5

 function roundByNum(num, rounder) {
    var multiplier = 1/(rounder||0.5);
    return Math.round(num*multiplier)/multiplier;
}

console.log(roundByNum(74.67)); //expected output 74.5
console.log(roundByNum(74.67, 0.25)); //expected output 74.75
console.log(roundByNum(74.67, 4)); //expected output 76

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X