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?
Beantworten Sie diese Frage anhand von Billy Reverbs Kommentar:
Ersetzen Sie einfach diese Attribute:
%Vor%dafür:
%Vor%Eine einfachere Lösung ist die Verwendung von
%Vor%in der PointFormat-Zeichenfolge
Bevor Sie zum Schreibtisch gehen, versuchen Sie, den Prozentsatz zu formatieren.
Hier sind einige Möglichkeiten, dies zu tun:
(Math.round(this.point.percentage*100)/100) + ' %'
Highcharts.numberFormat(this.percentage, 1) + '%'
this.percentage.toFixed(1)
{point.percentage}% or {point.percentage:.1f}%
Ich verwende häufig # 4 in QuickInfos und Beschriftungen und wenn keine benutzerdefinierte Formatierungsfunktion verwendet wird.
Tags und Links highcharts floating-accuracy pie-chart decimal percentage