Bonjour,

Je cherche à arrondir une valeur selon sa décimale, plus particulièrement le dernier chiffre. Exemples :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
12.458 -> doit renvoyer 12.46
12.454 -> doit renvoyer 12.45
12.45555556 ->doit renvoyer 12.46
12.4555555 -> doit renvoyer 12.45
12.45555554 -> doit renvoyer 12.45
La règle : on part de la 3e décimale.
- Si elle est < 5 : on arrondit à la 2ème décimale inférieure
- Si elle est > 5 : on arrondit à la 2ème décimale supérieure
- Si elle est = 5 : on vérifie la décimale suivante suivant la même règle
- S'il n'y a que des 5 : on arrondit à la 2ème décimale inférieure

J'ai essayé de faire une fonction d'analyse des décimales, mais ça ne me semble pas être une bonne solution.

J'ai d'assez bons résultats avec la fonction sprintf() :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
12.458 -> 12.46
12.454 -> .12.45
12.45555556 -> 12.46
12.45555554 -> 12.46
12.45555555 -> 12.46
Les deux derniers résultats ne suivent pas ma règle, donc c'est loupé.

Avez-vous une solution pas trop usine à gaz, ou un conseil pour mieux utiliser sprintf() ?

Merci pour votre aide.