计算小数方差java
时间: 2024-11-06 10:22:31 浏览: 9
java计算方差、标准差(均方差)实例代码
计算小数方差(也称为离群值敏感的方差)在Java中通常使用BigDecimal类来进行高精度计算,因为小数点后的操作可能会涉及到浮点误差。下面是一个简单的例子,展示了如何计算一组小数值的方差:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
public class DecimalVarianceCalculator {
public static void main(String[] args) {
ArrayList<BigDecimal> numbers = new ArrayList<>();
// 添加一些小数
numbers.add(BigDecimal.valueOf(10.5));
numbers.add(BigDecimal.valueOf(11.2));
numbers.add(BigDecimal.valueOf(9.8));
BigDecimal mean = calculateMean(numbers);
BigDecimal variance = calculateVariance(numbers, mean);
System.out.println("Mean: " + mean);
System.out.println("Variance: " + variance);
}
public static BigDecimal calculateMean(ArrayList<BigDecimal> numbers) {
if (numbers.isEmpty()) return null;
BigDecimal sum = BigDecimal.ZERO;
for (BigDecimal num : numbers) {
sum = sum.add(num);
}
return sum.divide(numbers.size(), RoundingMode.HALF_UP);
}
public static BigDecimal calculateVariance(ArrayList<BigDecimal> numbers, BigDecimal mean) {
if (numbers.isEmpty() || mean == null) return null;
BigDecimal sumOfSquares = BigDecimal.ZERO;
for (BigDecimal num : numbers) {
sumOfSquares = sumOfSquares.add((num.subtract(mean)).multiply(num.subtract(mean)));
}
return sumOfSquares.divide(numbers.size(), RoundingMode.HALF_UP).divide(BigDecimal.TEN, RoundingMode.HALF_UP);
}
}
```
在这个示例中,`calculateMean`函数计算平均值,而`calculateVariance`函数首先计算每个数值与平均值的差的平方和,然后除以数据点的数量并取整,最后除以10进一步减少误差。
阅读全文