Highcharts Kuchendiagramm ignoriert die Tooltip-Einstellung für prozentuale Dezimalstellen und weist ein Problem mit der Ungenauigkeit von Gleitkommazahlen auf

8

Highcharts 3.0 scheint bei der Anzeige von QuickInfos in einem Tortendiagramm Probleme mit der Genauigkeit von Gleitkommazahlen zu haben. Ich war in der Lage, den genauen Fehler zu reproduzieren, indem ich eines der Highcharts Demo-Kreisdiagramm - Torte mit Legende verwendete. Klicken Sie auf "Edit in JsFiddle", um das Javascript zu bearbeiten.

Suchen Sie im JavaScript-Fenster nach dem Abschnitt für Serien und Daten. Behalten Sie die Firefox- und IE-Daten bei und verwerfen Sie den Rest der Daten, damit wir uns auf nur zwei Scheiben Kuchen konzentrieren können. Die beiden Daten-Chucks haben keinen Prozentsatz, der zu 100 addiert, so dass Highcharts die Prozentsätze für uns neu berechnen. Klicken Sie oben auf die Schaltfläche Run, fahren Sie mit der Maus über die Slices. Die Prozentwerte sind sehr genau und die Anzahl der Dezimalstellen ist sehr hoch. Aber warten Sie, schauen Sie sich die Javascript Tooltip-Option an, Highcharts ignoriert eindeutig die Einstellung "prozentuale Dezimalstellen: 1". Das ist Problem # 1.

Lassen Sie uns nun die Datenprozentsätze wie folgt manuell bearbeiten: ['Firefox', 57.7], ['IE', 42.3] Sie addieren sich also genau zu 100.0. Drücken Sie die Run-Taste erneut, die Tooltips der Slices zeigen 'Firefox: 57.0000000000001%' und 'IE: 42.3%' an. Es sieht so aus, als ob eine prozentuale Neuberechnung durchgeführt wurde, unabhängig davon, ob sich die Prozentsätze zu 100 addieren oder nicht, wodurch hier eine kleine Gleitkomma-Ungenauigkeit eingeführt wird. Dies ist Problem Nr. 2. Hätte die Rundung "prozentuale Dezimalstellen" in diesem Fall funktioniert, könnte dieses Problem verschleiert worden sein.

Ich würde gerne wissen: * Hat noch jemand das selbe Problem gesehen und eine Art Workaround? * Können Highcharts auf diese Probleme reagieren und uns mitteilen, ob es sich um bekannte Fehler handelt?

    
Billy Reverb 09.04.2013, 16:32
quelle

4 Antworten

16

Beantworten Sie diese Frage anhand von Billy Reverbs Kommentar:

Ersetzen Sie einfach diese Attribute:

%Vor%

dafür:

%Vor%     
Bruno De Freitas Barros 10.05.2013 02:52
quelle
14

Eine einfachere Lösung ist die Verwendung von

%Vor%

in der PointFormat-Zeichenfolge

    
Steve Harris 16.08.2013 12:37
quelle
2

Für mich funktionierte die upvoted Lösung nicht:

%Vor%

aber das tat:

%Vor%     
edelans 10.09.2013 17:00
quelle
1

Bevor Sie zum Schreibtisch gehen, versuchen Sie, den Prozentsatz zu formatieren.

Hier sind einige Möglichkeiten, dies zu tun:

  1. (Math.round(this.point.percentage*100)/100) + ' %'
  2. Highcharts.numberFormat(this.percentage, 1) + '%'
  3. this.percentage.toFixed(1)
  4. {point.percentage}% or {point.percentage:.1f}%

Ich verwende häufig # 4 in QuickInfos und Beschriftungen und wenn keine benutzerdefinierte Formatierungsfunktion verwendet wird.

    
Jens A. Koch 07.11.2015 15:55
quelle