Bei der Anpassung des Zahlenformats werden Zahlen scheinbar falsch gerundet
Veröffentlicht: 15 Oct 2015 Zuletzt geändert am: 10 Nov 2023
Problem
Wenn die Anzahl der angezeigten Dezimalstellen für eine Zahl angepasst wird, kann es den Anschein haben, dass die Zahlen falsch auf- oder abgerundet werden. Beispielsweise kann eine als 40,5 angezeigte Zahl sich in 40 ändern, wenn die Formatierung so geändert wird, dass keine Dezimalstellen angezeigt werden.
Wenn Sie außerdem ROUND() in einer STR()-Funktion verwenden, werden Zahlen bei Verbindung mit einem Extrakt möglicherweise falsch gerundet. Beispiel: STR(ROUND(SUM[Sales]),2)
Umgebung
Tableau Desktop
Lösung
Option 1
Zahlen können in Tableau Desktop mit der Funktion ROUND() gerundet werden. Beim Erstellen der Berechnung muss jedoch die Aggregation berücksichtigt werden, da Tableau die Berechnung relativ zu den angewendeten Aggregationen auswertet. Wenn beispielsweise das Feld SUM([Field]) gerundet werden soll und die Berechnung ROUND([Field]) verwendet wird, interpretiert Tableau diese Berechnung als SUM(Round([Field]).
Um dieses Verhalten zu korrigieren, schreiben Sie das oben stehende Berechnungsbeispiel wie folgt um: ROUND(SUM(Field))
Ein konkretes Beispiel finden Sie in der angehängten Arbeitsmappe mit dem Namen Round String.twbx.
Option 2
Verwenden Sie zusätzliche Zeichenfolgenmodifizierer wie LEFT() sowie zusätzliche Rundungswerkzeuge wie CEILING(), um eine genauere Darstellung zu erstellen.
Beachten Sie, dass durch diese Änderungen ein langes und nicht besonders leistungsstarkes berechnetes Feld entstehen kann: STR(ROUND(SUM[Sales]),2) = 319,147230000001
Unter Verwendung der oben stehenden Änderungen: LEFT(STR((CEILING(SUM([Sales])*100))/100),6) = 319,15
Option 3
Zeigen Sie die zugrunde liegenden Daten an, um die ursprüngliche Zahl zu überprüfen und sicherzustellen, dass sie für das Zahlenformat richtig gerundet wird. Beispielsweise wird ein ursprünglicher Wert von 40,48 richtig auf 40,5 gerundet, wenn eine Dezimalstelle angegeben wird, und auf 40, wenn null Dezimalstellen angegeben werden.
Ursache
Tableau Desktop (Tableau Prep) rundet Zahlen anhand des ursprünglichen Werts in der Datenbank und folgt dabei der Regel, dass nach der Hälfte aufgerundet wird.
Zusätzliche Informationen
Dies ist kein spezielles Verhalten von Tableau Desktop, sondern hängt damit zusammen, wie Daten auf Computern gespeichert werden, insbesondere Dezimalzahlen. Bei Ganzzahlen kann einfach eine ganze Zahl addiert oder subtrahiert werden. Für binäre Daten gilt das Gleiche:
Dezimal: 4 + 1 = 5
Binär: 100 + 1 = 101
Einfache Dezimalzahlen können jedoch in einigen Fällen nicht exakt als binäre Zahlen dargestellt werden.
Beispielsweise ist 0,1 eine einfache Dezimalzahl. In der binären Darstellung entspricht diese Zahl sowohl 0,0999999999999999 als auch 0,1000000000000001 und allen Zahlen dazwischen. (Beachten Sie, dass jede Zahl genau 16 Dezimalstellen umfasst.) Für die Anzeige der Zahlenwerte auf der Darstellungsebene kann das Problem gelöst werden. Sollen jedoch Berechnungen anhand der Werte durchgeführt werden oder die Werte in Zeichenfolgen umgewandelt werden, dann kommen die zugrunde liegenden Werte zum Vorschein und dieses Verhalten ändert sich abhängig von verschiedenen Faktoren wie beispielsweise der Datenbank.
Die folgenden Beispiele/Artikel zeigen, wie sich dieses grundlegende Problem der Informatik in verschiedenen Sprachen auswirkt.
Weitere Informationen zu diesem Thema und mögliche Problemumgehungen in Tableau Desktop finden Sie in folgendem Community-Foren-Thread: Round and then convert to a string (Runden und anschließendes Konvertieren in eine Zeichenfolge).
Weitere Informationen zur Funktion ROUND() finden Sie in der folgenden Tableau-Hilfedokumentation: Zahlenfunktionen.
Vielen Dank für Ihr Feedback zur Effektivität dieses Artikels.