BASE DE CONNAISSANCES

Les nombres ne sont pas arrondis correctement en cas d'ajustement du format de nombre


Date de publication : 15 Oct 2015
Date de dernière modification : 10 Nov 2023

Problème

Lorsque vous ajustez le nombre de décimales affichées pour un nombre, les nombres peuvent s'afficher à l'arrondi supérieur ou inférieur incorrect. Par exemple, un nombre affiché sous la forme 40,5 peut changer en 40 lorsque le formatage est modifié de manière à n'afficher aucune décimale.

De plus, lorsque vous utilisezROUND() dans une fonction STR(), l'arrondi peut être incorrect en cas de connexion à un extrait, Par exemple : STR(ROUND(SUM[Sales]),2)

Environnement

Tableau Desktop

Résolution

Option 1

L'arrondi peut être appliqué dans Tableau Desktop avec la fonction ROUND(). Toutefois, l'agrégation doit être prise en compte lors de l'écriture du calcul puisque Tableau peut interpréter le calcul par rapport aux agrégations appliquées. Par exemple, si le champ nécessaire pour arrondir est SUM([Field]) et que le calcul demandé est ROUND([Field]), Tableau interprète le calcul indiqué comme SUM(Round([Field])

Pour corriger ce comportement, réécrivez l'exemple de calcul ci-dessus comme suit : ROUND(SUM(Field)).

Pour afficher un exemple concret, consultez le classeur joint appelé Round String.twbx.

Option 2

Utilisez des modificateurs de chaîne supplémentaires tels que LEFT() ainsi que des outils d'arrondi supplémentaires tels que CEILING() pour créer une représentation plus précise.
  • Notez que des modifications de ce type peuvent créer un champ calculé long et peu performant : STR(ROUND(SUM[Sales]),2) = 319.147230000001
  • En utilisant les modifications ci-dessus : LEFT(STR((CEILING(SUM([Sales])*100))/100),6) = 319.15

Option 3

Affichez les données sous-jacentes pour vérifier le nombre d'origine et s'assurer qu'il est correctement arrondi pour le format de nombre. Par exemple, une valeur d'origine de 40,48 est arrondie correctement à 40,5 si une décimale est spécifiée, et à 40 si aucune décimale n'est spécifiée.

Cause

Tableau Desktop (Tableau Prep) arrondit les nombres en fonction de la valeur d'origine figurant dans la base de données, en suivant la convention de l'arrondi au demi-point. 

Informations supplémentaires

Ce comportement n'étant pas spécifique à Tableau Desktop, il est plus fondamental d'examiner comment les ordinateurs stocke les données, tout particulièrement ce que nous considérons des valeurs « décimales ». Les entiers ne posent pas de difficultés. En ajoutant ou en soustrayant simplement un nombre entier, vous pouvez faire la même chose avec les données binaires : 
  • En décimale : 4 + 1 = 5 
  • En binaire : 100 + 1 = 101 
Toutefois, avec les valeurs décimales, la traduction de ces valeurs distinctes en une représentation binaire, parfois une simple représentation en décimales, ne se traduit pas parfaitement en binaire.

Par exemple, ,1 a une décimale simple mais le nombre représentant cette valeur en binaire peut représenter à la fois ,0999999999999999 et ,1000000000000001, et tous les nombres entre les deux. (Notez qu'il y a exactement 16 décimales dans chaque nombre.) Cela peut être traité en affichant les valeurs de nombre sur la couche d'affichage, mais l'exécution de calculs sur les valeurs ou la conversion de valeurs en chaînes affichera les valeurs sous-jacentes. Ce comportement change en fonction de certains facteurs incluant la base de données. 

Voici quelques exemples/articles décrivant comment ce problème se manifeste dans les différentes langues et en quoi il constitue un problème majeur en informatique. 
Pour une discussion sur cette rubrique et les astuces possibles dans Tableau Desktop, consultez le thread suivant dans les forums de la communauté : Arrondir puis convertir en une chaîne

Pour plus d'informations sur la fonction ROUND(), consultez la documentation d'aide de Tableau suivante : Fonctions de nombre.


Cet article vous a-t-il permis de résoudre le problème ?