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的设计者应该是不考虑位数这么大的情形,因为这么大的数应该在单位上做文章,比如万为单位,而不应该显示这么大的数,对用户也是不友好的