我需要将这些值四舍五入为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.
答案 0 :(得分:0)
替代方法之一是在将这些值插入List
或Map
之前,您可能需要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));