Java 四舍五入到2位数后如何打印双精度?

Java 四舍五入到2位数后如何打印双精度?,java,android,double,Java,Android,Double,我正在使用EazeGraph库绘制我的Double值 // in percent Double PROTEIN_percent = ((PROTEIN_grams / TOTALCALORIES_numbers) * 100); Double FAT_percent = ((FAT_grams / TOTALCALORIES_numbers) * 100); Double CARBS_percent = ((CARBS_grams / TOTALCALORIES_nu

我正在使用
EazeGraph
库绘制我的
Double

  // in percent
    Double PROTEIN_percent = ((PROTEIN_grams / TOTALCALORIES_numbers) * 100);
    Double FAT_percent = ((FAT_grams / TOTALCALORIES_numbers) * 100);
    Double CARBS_percent = ((CARBS_grams / TOTALCALORIES_numbers) * 100);
问题是,如果不将
.floatValue
添加到
双精度

  mPieChart.addPieSlice(new PieModel("CARBS", CARBS_percent.floatValue(), Color.parseColor("#FE6DA8")));
    mPieChart.addPieSlice(new PieModel("PROTEIN", PROTEIN_percent.floatValue(), Color.parseColor("#56B7F1")));
    mPieChart.addPieSlice(new PieModel("FAT", FAT_percent.floatValue(), Color.parseColor("#FED70E")));
    mPieChart.startAnimation();
另外,我希望输出四舍五入到2位,它不允许我使用
String.format(“%.2f”
),因为它不是字符串

这就是我得到的:62.1232131342

这就是我想要的:62.12您有两个选择:

第一个选项:禁用十进制

这个选项实际上不是一个解决方案,因为从我在他们的库中看到的情况来看,您只能在piechart上设置一个自定义的内部值,这就引出了第二个选项:

mPieChart.setShowDecimal(false);
第二个选项:让侦听器手动更改饼图的内部值。

public static String formatTwoDecimal(double d) {
   NumberFormat numberFormat = new DecimalFormat("#,##0.00");

   return numberFormat.format(d);
}
=======

mPieChart.setUseCustomInnerValue(true); //to override the inner value
mPieChart.setOnItemFocusChangedListener(new IOnItemFocusChangedListener() {
   @Override
   void onItemFocusChanged(int _Position) {
      //_Position is the position of the pie you inserted, in your case, 0 will be the CARBS, 1 is PROTEIN, 2 is FAT
      if (_Position == 0) {
         mPieChart.setInnerValueString(formatTwoDecimal(CARBS_percent));
      } else if (_Position == 1) {
         mPieChart.setInnerValueString(formatTwoDecimal(PROTEIN_percent));
      } else if (_Position == 2) {
         mPieChart.setInnerValueString(formatTwoDecimal(FAT_percent));
      }
   }
});
实际上我还没有尝试过这个方法,但根据我对他们的库的评论,这个方法会有效。如果你发现这个方法有任何错误,请告诉我。

应该有效

String twoDecimalResult = String.format("%.2f", CARBS_percent);
你可以这样做

Float.parseFloat(String.format("%.2f", 62.1232131342));
试试这个

DecimalFormat decimalFormat = new DecimalFormat("#0.00");

decimalFormat.format(Double.parseDouble(" your value "))

很抱歉,您的问题似乎发生在库本身,即EazeGraph上。他们没有将其舍入到两个小数点。我想您可以在他们的github上提出这个问题。我使用了
(“CARBS”,formatTwoDecimal(CARBS_percent)。length(),Color
成功了!但是可以使用它吗?输出是什么?我猜输出将只是字符串的长度,而不是实际的数字,你只需要得到长度并将其传递给参数。我修改了PieModel,它只接受float作为第二个参数。是的,输出是混乱的。它们是4,4,7。我是expec成百上千。我想是的。如果我们能破解或有选择,我会尝试查看库。我想这不是重复的,因为问题取决于库本身,而是,这不是一个适当的问题。这个问题必须在库本身上提出,EazeGraph。如果他们可以添加或他们有选择格式化价值。