8

在饼图上显示工具提示时,Highcharts 3.0 似乎存在浮点数准确性问题。通过使用 highcharts 演示饼图之一 - Pie with Legend ,我能够重新创建确切的错误。单击“在 JsFiddle 中编辑”以编辑 javascript。

在 javascript 面板中,查找系列和数据部分。保留 Firefox 和 IE 数据并丢弃其余数据,因此我们可以只关注 2 块饼图。两个数据卡盘的百分比加起来不是100,所以highcharts会为我们重新计算百分比。单击顶部的“运行”按钮,将鼠标悬停在切片上,百分比非常准确,具有最大小数位数。但是等等,看看 javascript 工具提示选项,highcharts 显然忽略了“percentageDecimals: 1”设置。这是问题#1。

现在让我们手动编辑数据百分比,如下所示: [ 'Firefox', 57.7 ], [ 'IE', 42.3] 所以它们加起来正好是 100.0。再次点击运行按钮,切片工具提示显示“Firefox:57.0000000000001%”和“IE:42.3%”。无论百分比加起来是否为 100,看起来都进行了百分比重新计算,因此在这里引入了一个小的浮点不准确性。这是问题#2。如果“percentageDecimals”四舍五入在这种情况下有效,这个问题可能会被掩盖。

我想知道:*其他人看到同样的问题并有某种解决方法吗?* highcharts 能否回应这些问题并让我们知道它们是否是已知的错误?

4

4 回答 4

16

根据 Billy Reverb 的评论回答这个问题:

只需替换此属性:

tooltip: {
    pointFormat: '{series.name}: <b>{point.percentage}%</b>',
    percentageDecimals: 1
}

为了这:

tooltip: {
    formatter: function () {
                   return this.point.name + ': <b>' + Highcharts.numberFormat(this.percentage, 1) + '%</b>';
               }
}
于 2013-05-10T02:52:09.313 回答
14

一个更简单的解决方案是使用

{point.percentage:.1f}%

在 pointFormat 字符串中

于 2013-08-16T12:37:02.753 回答
2

对我来说,赞成的解决方案不起作用:

tooltip: {
    formatter: function () {
                   return this.point.name + ': <b>' + Highcharts.numberFormat(this.percentage, 1) + '%</b>';
               }
}

但这确实:

this.percentage.toFixed(1)
于 2013-09-10T17:00:12.390 回答
1

在你去head-desk-head-desk之前,同时尝试格式化百分比。

以下是一些方法:

  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}%

我经常在工具提示和标签中使用#4,并且在不使用自定义格式化程序功能时。

于 2015-11-07T15:55:12.487 回答