【发布时间】:2017-01-06 03:31:07
【问题描述】:
我正在尝试显示具有十进制值的条形 grpah (MPAndroidChart)。 但图表显示它们没有小数点。 我的值格式化程序代码如下所示:
protected class MyValueFormatter implements ValueFormatter{
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
Log.d(Constants.TAG,"Initial value == "+value+" == "+entry.getVal());
DecimalFormat df = new DecimalFormat("#.###");
df.setRoundingMode(RoundingMode.CEILING);
Log.d(Constants.TAG,"Formatted value == "+df.format(value));
return df.format((double)value);
}
}
以下是用于绘制图表的数据
"data":[[16003376.986129051,10003344],[25089516.75475807,20089516],[39517705.32395167,30517705],[2490973.063333333,3090973]]
下面是值格式化日志
Initial value == 1.6003376E7 == 1.6003376E7
Formatted value == 16003376
Initial value == 1.0003344E7 == 1.0003344E7
Formatted value == 10003344
Initial value == 1.6003376E7 == 1.6003376E7
Formatted value == 16003376
Initial value == 1.0003344E7 == 1.0003344E7
......many more
我担心的是:
- 原始值由16003376.986129051转换为1.6003376E7
- 图表将条形顶部的值显示为 16003376,因为尚未实现小数处理
- 我如何将原始值转换为 3 位小数,因为从财务角度来看,十进制值非常重要
【问题讨论】:
-
显示您当前图表的一些图像
-
@cxphong 上传的图表图片
-
这不是 MPAndroidChart 的问题,而是
DecimalFormat的工作方式和 floating point numbers are represented and how to round them in Java 的工作方式 -
你能解决这个问题吗?我用一个例子更新了我的答案