Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexBonjour,
Je rencontre un problème d’arrondi pour lequel je n’arrive pas à trouver de solution.
Le workflow ci-joint a été créé à partir d’un workflow plus important.
Je l’ai réduit à un seul outil et quelques variables.
En résumé, je cherche à faire le calcul (430,54/(1-0,2)), l’arrondir à 2 décimales, et stocker le résultat sous forme de texte.
Le résultat non arrondi est 538.175, et une fois arrondi on devrait avoir 538.18 ;
Or, le workflow trouve 538,17.
C’est parce qu’il stocke 538,17499 (bien qu’il affiche 538,175), mais ce stockage est faux : le bon nombre est celui affiché 538,175.
Comment faire pour que le nombre arrondi soit 538,18 ?
Détail des variables :
v1 v2 v3 v4 v5
430,54 0.8 538.175 538.17 538.17
Si quelqu’un aime les mystères ......... 😉
Merci d’avance
Bonne soirée
Cordialement
Résolu ! Accéder à la solution.
Hello @ALTA01,
On adore les mystères chez Alteryx - Vanille pour moi 😆
Voici comment obtenir la valeur souhaité (WF join) et je te recommande un super article sur les explications de stockages : https://community.alteryx.com/t5/Alteryx-Designer-Discussions/Alteryx-Odd-Behavior/td-p/89086
Je confirme on adore les mystères chez Alteryx - Mulder pour moi 😊
Effectivement ces problématiques d'arrondis soulèvent souvent des mystères que l'on ne comprends spontanément pas mais qui ont des explications rationnelles.
Un petite couche de mystère en plus pour la route ?
J'ai appliqué la fonction ROUND ci dessous
...à différent nombres se terminant toujours par .xx5 et voici le résultat:
Parfois il arrondi au dessus et parfois au dessous. Mystérieux non ?
Pour simplifier, l'explication viens du mode de stockage de certains nombres dans des formats particuliers (imaginez comment stocker la valeur 1/3 par exemple). Ce qu'on voit à l'écran ne correspond pas alors exactement à la réalité informatique mais est légèrement supérieur ou inférieur. Et donc un même .175 arrondi ira parfois à la décimale supérieure et parfois à l'inférieure. Cf l'article de @mathieuf ou celui ci (mais seulement si vous êtes bien reposé) : Floating point numbers are surprisingly strange
Comprendre le pourquoi ne suffit cependant pas à gérer le problème.
En complément de la proposition de @mathieuf voici une autre approche qui permet de toujours aller rechercher la valeur supérieure ou inférieure en fonction de ce que l'on souhaite.
Sans surprise cela exploite les fonctions Ceil (1er entier supérieur) et Floor (1er entier inférieur).
La nuance est que l'on multiplie par 100 avant d'appliquer ces fonctions pour faire l'arrondi à la décimale qui nous intéresse => 530.175 *100 = 53017.5 et j'arrondi à l'entier supérieur ou inférieur.
Ensuite je re divise par 100 pour retrouver mon échelle initiale.
A adapter donc en fonction du nombre de décimale à laquelle on veut arrondir tout comme pour la solution de Mathieu il faut adapter le nombre de décimales du Fixed Decimal.
Pléthore de mystères, mais aussi pléthores de pistes à adapter à ton contexte @ALTA01.
Enjoy !
Bonjour @ALTA01,
Merci beaucoup pour ta participation au forum et ta question !
Comme tu dis @StephaneP , que de mystères chez Alteryx ... (Pour les fans des années 90 😅)
Si la réponse de @StephaneP ou @mathieuf a résolu le mystère, pourrais-tu "l'Accepter comme solution", tu aideras ainsi d'autres utilisateurs Alteryx.
Merci beaucoup à toi et une très bonne journée !
Je vous remercie Mathieu et Stéphane
je vais mettre en oeuvre les actions que vous m'avez indiqué et je vous tiens au courant
Encore merci
Cordialement
oui, @ALTA01 , surtout tient nous au courant !
En te souhaitant une excellente semaine,
Steph
Bonjour @ALTA01 ,
as-tu pu tester les solutions proposées par @StephaneP et @mathieuf ?
Nous nous réjouissons de ton retour !
Bonjour Steph
merci beaucoup pour la solution que j'ai pu tester 🙂
bonne soirée
Cordialement
Bonjour @StephaneP et @mathieuf
merci beaucoup pour la solution que j'ai pu tester 🙂
je vous souhaite une bonne soirée
Cordialement
Je suis ravie de savoir que les solutions de @StephaneP et @mathieuf ont pu t'aider.
Merci de nous avoir tenu au courant @ALTA01.
Si tu as d'autres questions, surtout n'hésites pas à les poser sur le forum.
En te souhaitant une excellente journée.