四舍五入,在列表或地图中找到最小值的双精度值

时间:2014-08-22 10:38:11

标签: java

我需要将这些值四舍五入为4位并将其插入List或Map并找到要打印的最低值。

{0.37677792283166867, 0.4392472911358186, 0.37677792283166867}

我通过

四舍五入
double value = Math.round(data * 10000.0) / 10000.0;

以及

BigDecimal bd = new BigDecimal(data);
bd = bd.setScale(4, BigDecimal.ROUND_HALF_UP);
double value = bd.doubleValue();

但我的结果为

{0.3768, 0.43920000000000003, 0.3768}

在这两种情况下,第二个数据都像这样四舍五入

我试图找到存储在arraylist中的最小值

double minIndex = list.indexOf(Collections.min(list));

但我的输出是0.

1 个答案:

答案 0 :(得分:0)

替代方法之一是在将这些值插入ListMap之前,您可能需要java.text.DecimalFormat的帮助。示例:

double value = 0.43920000000000003;

 DecimalFormat decimalFormat = new DecimalFormat(".####");
 String result = decimalFormat.format (value); // you will need to parse it again to double
 System.out.println(Double.parseDouble(result)); 

找到最小值:

    Double array []= {0.37677792283166867, 0.4392472911358186, 0.37677792283166867};
    List<Double> list = new ArrayList<>(Arrays.asList(array));
     double IndexOfMinimumValue = list.indexOf(Collections.min(list));
    System.out.println(list.indexOf(Collections.min(list)));

当然,它会打印0,因为最小值在index-0上。如果您希望最小值也输出System.out.println(IndexOfMinimumValue +", minimum value = "+Collections.min(list));