首页 文章

Highcharts饼图忽略百分比十进制工具提示设置并且存在浮点不准确问题

提问于
浏览
8

在饼图上显示工具提示时,Highcharts 3.0似乎有浮点数精度问题 . 我能够通过使用一个highcharts演示饼图--Pie with Legend来重新创建确切的错误 . 单击"Edit in JsFiddle"编辑javascript .

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

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

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

4 回答

  • 1

    根据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>';
                   }
    }
    
  • 2

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

    {point.percentage:.1f}%
    

    在pointFormat字符串中

  • 16

    对我来说,upvoted解决方案不起作用:

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

    但是这样做了:

    this.percentage.toFixed(1)
    
  • 14

    在你去头桌前,然后尝试格式化百分比 .

    以下是一些方法:

    • (Math.round(this.point.percentage*100)/100) + ' %'

    • Highcharts.numberFormat(this.percentage, 1) + '%'

    • this.percentage.toFixed(1)

    • {point.percentage}% or {point.percentage:.1f}%

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

相关问题