簡體   English   中英

四舍五入並在列表或地圖中找到最小的雙精度值

[英]Round off and find minimum of a double value in list or map

我需要將這些值四舍五入到4位數字,然后將其插入“列表”或“映射”中,並找到要打印的最低值。

{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。

一種替代方法是,在將這些值插入ListMap ,可能需要java.text.DecimalFormat幫助。 范例:

double value精度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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM