使用ArrayList.get上的Math.round舍入到一个小数位

时间:2015-08-24 14:40:49

标签: java formatting rounding

我在Math.roundDecimalFormat等上阅读了很多帖子。但是我不知道id如何在代码中正确使用上述任何一个,而不仅仅是简单声明的变量。

 List<Float> depthCopy = new ArrayList<>(depthAdd);

        ...//collection sort
        ...//iterate i over arraylist

      if (depthCopy.get(i).equals(depthAdd.get(depthAdd.size() - 1))) {
          System.out.println("Wettest year: " + (1000 + i) + " "
                  + //FORMAT HERE?(depthAdd.get(depthAdd.size() - 1)));
            }
        }  

返回值Wettest year: 2002 1146.3999

1146.3999是正确的

但是我需要将这个格式化/舍入值打印到1位小数,即: 1146.4

我尝试了以下内容:

System.out.println("Wettest year: " + (1930 + i) + " "
                    + (double)Math.round(depthAdd.get(depthAdd.size() - 1)));

返回1146.0(不正确)

我希望得到的印刷价值是1146.4。实现这一目标的最佳方法是什么?为什么这种方式比其他替代方案更好?

SOLUTION:而不是Math.round使用DecimalFormat

DecimalFormat df = new DecimalFormat("####.#");
              System.out.println("Wettest year: " + (1000 + i) + " "
                      + df.format((depthAdd.get(depthAdd.size() - 1)));

0 个答案:

没有答案