MpAndroid 丢失精度问题

    技术2022-07-16  82

    MpAndroid的数据都是Entry形式的,而Entry的x和y都是float,这就会出现一个问题,就是如果数据超过八位会出现精度丢失。如果利用markerview显示点的数值,会出现偏差

    至于为什么精度丢失,是因为java本身数据存储方式导致的,可以自行查资料。

    解决方案:

    Entry有好几个构造方法,利用这个:

    public Entry(float x, float y, Object data) { super(y, data); this.x = x; }

    利用data传递字符串过去, 在markerview中用Entry的getData直接取出

    String.valueOf(e.getData())

     

    比较完美解决,可以忽略y抽显示的差别,因为已经8位以上了,细小差别已经看不出来了

    但其实MpAndroid的设计者应该是不考虑位数这么大的情形,因为这么大的数应该在单位上做文章,比如万为单位,而不应该显示这么大的数,对用户也是不友好的

    Processed: 0.020, SQL: 9