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.
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.
La FAQ JavaScript – Les cours JavaScript
Touche F12 = la console → l’outil indispensable pour développer en JavaScript !
Avec le modulo, ça donne ça ... en premier jet ... J'ai peut-être pas pensé à tous les cas, c'est sûrement optimisable
Poste nous ta solution optimisée
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part while(++n%500);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Blog
Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
(Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)
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
![]()
EN 2005 on avait déja résolu le problème ^^
http://www.developpez.net/forums/d68...centimes-pres/
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
Partager