Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Histogram range 出现计算精度误差 #9

Closed
ToughRover opened this issue Mar 9, 2018 · 6 comments
Closed

Histogram range 出现计算精度误差 #9

ToughRover opened this issue Mar 9, 2018 · 6 comments

Comments

@ToughRover
Copy link

ToughRover commented Mar 9, 2018

Histogram方法在对float数值进行计算过程中出现精度不一致的问题, 例如range的宽度是0.02, 计算出来的range会出现类似下面的情况 0.5,0.52, 0.54000000000001, 0.56, 0.58000000000001, 0.6

对于在x轴上显示带来问题。
能否根据Range计算过程中step的精度来决定histogram range数值的精度,比如做如下修改:
range.js

return function (start, stop, step) {

        var len = arguments.length;

        if (len < 2) {
            stop = start;
            start = 0;
            step = 1;
        }
        else if (len < 3) {
            step = 1;
        }
        else {
            step = +step;
        }

        var n = Math.ceil((stop - start) / step);
        var range = new Array(n + 1);

        for (var i = 0; i < n + 1; i++) {
            // range[i] = start + i * step;
            // 示例,根据step的精度来确定range的精度,使最终计算的结果中range的范围精度保持一致
            var decimalPart  = step.toString().split('.')[1];
            var precision = decimalPart ? decimalPart.length : 0;
            range[i] = Number((start + i * step).toFixed(precision));
        }
        return range;
    };
@deqingli
Copy link
Contributor

不好意思,一直有其他的事,回复的不及时,我把 echarts 的那个issue 关了,在这个 issue 跟进

@ToughRover
Copy link
Author

没关系,有人处理这个issue就好了

@deqingli
Copy link
Contributor

请问你这个有可视化的例子么,我可以访问么,想看下实际的效果,方便我全面的改一下

@ToughRover
Copy link
Author

screen shot 2018-03-12 at 3 13 09 pm

你看看这个就是一个示例,可以准备一组类似于 [0.87659, 0.68975, 0.78613]这种浮点数数组来计算histogram来复现这个问题

@deqingli
Copy link
Contributor

嗯嗯,好,谢谢

@deqingli
Copy link
Contributor

您好,精度问题已经解决了,会随下一版本一起发布。也欢迎您给我们提 PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants