Bonjour,
je cherche désespérément une formule pour arrondir un nombre entier à la 500e supérieur. Exemple : 650 = 1000, 1250 = 1500, 2850 =3000.
Un idée ?
Merci d'avance
Salutations à tous.
Version imprimable
Bonjour,
je cherche désespérément une formule pour arrondir un nombre entier à la 500e supérieur. Exemple : 650 = 1000, 1250 = 1500, 2850 =3000.
Un idée ?
Merci d'avance
Salutations à tous.
Idée 1 :
divise par 500, arrondis avec Math.ceil et re-multiplie par 500. Mais ça peut poser des problèmes de précision dûs au format de nombres à virgule flottante.
Idée 2 :
Utilise le modulo (x % 500) et rajoute 500 après. Attention avec les nombres négatifs, le modulo part dans l'autre sens.
Avec le modulo, ça donne ça ... en premier jet ... J'ai peut-être pas pensé à tous les cas, c'est sûrement optimisable :D
Poste nous ta solution optimisée ;)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function arrondirA500(n) { return n % 500 === 0 && n !== 0 ? n : ( n === 0 ? 500 : n - (n % 500) - (n<0 ? 500 : -500) ); } console.log(arrondirA500(650)); // 1000 console.log(arrondirA500(1250)); // 1500 console.log(arrondirA500(2850)); // 3000 console.log(arrondirA500(2499)); // 2500 console.log(arrondirA500(2500)); // 2500 console.log(arrondirA500(2999)); // 3000 console.log(arrondirA500(3000)); // 3000 console.log(arrondirA500(3001)); // 3500 console.log(arrondirA500(-1000)); // -1000 console.log(arrondirA500(-499)); // -500 console.log(arrondirA500(-501)); // -1000 console.log(arrondirA500(-1)); // -500 console.log(arrondirA500(0)); // 500
ah on ne joue pas au golf ?Code:while(++n%500);
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function arrondirAX( X, n ){ var x = Math.abs( X ); return ( n % x == 0 ) ? n : ( Math.abs( n ) == 0 ? n : n - ( n % x ) - ( n < 0 ? x : -x ) ); } console.log( 0, arrondirAX( 500, 0 ) ); // 0 ! console.log( -0, arrondirAX( 500, -0 ) ); // 0 ! console.log( 0, arrondirAX( -0, 0 ) ); // 0 ! console.log( -0, arrondirAX( 0, -0 ) ); // 0 ! console.log( -20, arrondirAX( 2, -20 ) ); // -20 console.log( -20, arrondirAX( 5, -20 ) ); // -20 console.log( 20, arrondirAX( 2, 20 ) ); // 20 console.log( 20, arrondirAX( 5, 20 ) ); // 20 console.log( 19, arrondirAX( 2, 19 ) ); // 20 console.log( 14, arrondirAX( 5, 14 ) ); // 15 console.log( -19, arrondirAX( 2, -19 ) ); // -20 console.log( -14, arrondirAX( 5, -14 ) ); // -15
Bonjour et merci les amis, j'ai testé toutes les solutions et ça fonctionne... vraiment génial !!!
Encore merci et bonne journée à vous tous.
Cordialement
:D:D
EN 2005 on avait déja résolu le problème ^^
http://www.developpez.net/forums/d68...centimes-pres/