List<BigDecimal> priceList = new ArrayList<>(); 获取平均值
时间: 2024-01-01 14:54:55 浏览: 31
可以使用 BigDecimal 进行精确计算,具体方法如下:
1. 定义 BigDecimal 类型的 sum 变量,并初始化为 0。
2. 遍历 priceList 中的每个元素,将其加入到 sum 变量中。
3. 使用 BigDecimal 类的 divide 方法,将 sum 变量除以 priceList 的大小(即元素个数),得到平均值。
示例代码如下:
```
List<BigDecimal> priceList = new ArrayList<>();
// 将元素添加到 priceList 中
BigDecimal sum = new BigDecimal(0);
for (BigDecimal price : priceList) {
sum = sum.add(price); // 将元素加入到 sum 中
}
BigDecimal average = sum.divide(new BigDecimal(priceList.size()), 2, RoundingMode.HALF_UP);
// 将 sum 除以列表大小,得到平均值,小数位数为 2,舍入方式为四舍五入
System.out.println("平均值为:" + average);
```
相关问题
List<BigDecimal> priceList = new ArrayList<>(); 使用stream 获取平均值,最大值,最小值
得到以下代码:
```
List<BigDecimal> priceList = new ArrayList<>();
priceList.add(new BigDecimal("10.5"));
priceList.add(new BigDecimal("20.3"));
priceList.add(new BigDecimal("5.2"));
priceList.add(new BigDecimal("16.7"));
BigDecimal average = priceList.stream().mapToDouble(BigDecimal::doubleValue).average().getAsDouble();
BigDecimal max = priceList.stream().max(BigDecimal::compareTo).get();
BigDecimal min = priceList.stream().min(BigDecimal::compareTo).get();
System.out.println("Average: " + average);
System.out.println("Max: " + max);
System.out.println("Min: " + min);
```
输出结果为:
```
Average: 13.175
Max: 20.3
Min: 5.2
```
如何将List<String>转化为List<BigDecimal>
要将 `List<String>` 转换为 `List<BigDecimal>`,你可以使用流(Stream)和 `BigDecimal` 的 `valueOf` 方法来实现。以下是一种实现方式:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> stringList = Arrays.asList("1.23", "4.56", "7.89");
List<BigDecimal> bigDecimalList = stringList.stream()
.map(BigDecimal::new)
.collect(Collectors.toList());
System.out.println(bigDecimalList);
}
}
```
在上述示例中,我们首先创建了一个 `List<String>`,名为 `stringList`,其中包含了几个字符串表示的数字。然后,我们使用流的 `map` 操作来将每个字符串转换为对应的 `BigDecimal` 对象。这里使用了方法引用 `BigDecimal::new` 来创建 `BigDecimal` 对象。最后,我们使用 `collect` 方法将流收集为一个新的 `List<BigDecimal>`,名为 `bigDecimalList`。
运行以上代码,输出将会是:
```
[1.23, 4.56, 7.89]
```
这就是将 `List<String>` 转换为 `List<BigDecimal>` 后的结果。
希望对你有帮助!如果还有其他问题,请随时提问。