[英]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。
一種替代方法是,在將這些值插入List
或Map
,可能需要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.