Free Trial

Forum

Trouvez des réponses, posez des questions, et partagez votre expertise d’Alteryx.
TIPS de la semaine

Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !

Voir l'index
RÉSOLU

Erreur d'arrondi

ALTA01
Astéroïde

Bonjour,

 

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

9 RÉPONSES 9
mathieuf
Alteryx
Alteryx

Hello @ALTA01,

 

On adore les mystères chez Alteryx - Vanille pour moi 😆

 

MathieuF_0-1614115937752.png

 

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

StephaneP
Alteryx Alumni (Retired)

Je confirme on adore les mystères chez Alteryx - Mulder pour moi 😊

StephaneP_0-1614123797473.png

 

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

StephaneP_2-1614124731259.png

 

...à différent nombres se terminant toujours par .xx5 et voici le résultat:

StephaneP_1-1614124610940.png

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).

StephaneP_3-1614125439875.png

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.

 

StephaneP_4-1614125619293.png

 

StephaneP_5-1614125800583.png

 

 

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 !

Stéphane Portier
Sales Engineer
Alteryx
StephV
Alteryx Alumni (Retired)

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 😅)

Mysteres emission.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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 !

Steph Vitale-Havreng
ALTA01
Astéroïde

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

StephV
Alteryx Alumni (Retired)

oui, @ALTA01 , surtout tient nous au courant ! 

 

En te souhaitant une excellente semaine,

Steph 

 

Steph Vitale-Havreng
StephV
Alteryx Alumni (Retired)

Bonjour @ALTA01 , 

 

as-tu pu tester les solutions proposées par @StephaneP  et @mathieuf ? 

 

Nous nous réjouissons de ton retour ! 

Steph Vitale-Havreng
ALTA01
Astéroïde

Bonjour Steph

merci beaucoup pour la solution que j'ai pu tester 🙂

bonne soirée

Cordialement

ALTA01
Astéroïde

Bonjour @StephaneP et @mathieuf 

merci beaucoup pour la solution que j'ai pu tester 🙂

je vous souhaite une bonne soirée

Cordialement

StephV
Alteryx Alumni (Retired)

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. 

 

Steph Vitale-Havreng
Étiquettes