protected BigDecimal getAverageBigDecimal(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); BigDecimal result = new BigDecimal(0.0); BigDecimal period = new BigDecimal(0.0); for (int i = 0; i < intervals.length; i++) { BigDecimal w = new BigDecimal(weights[i]); period = period.add(w); w = w.multiply(new BigDecimal(((Number) getValue(intervals[i])).doubleValue())); result = result.add(w); } return result.divide(period, 10, RoundingMode.HALF_EVEN); }
protected BigDecimal getAverageBigDecimal(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); BigDecimal result = new BigDecimal(0.0); BigDecimal period = new BigDecimal(0.0); for (int i = 0; i < intervals.length; i++) { BigDecimal w = new BigDecimal(weights[i]); period = period.add(w); w = w.multiply(new BigDecimal(((Number) getValue(intervals[i])).doubleValue())); result = result.add(w); } return result.divide(period, 10, RoundingMode.HALF_EVEN); }
protected Double getAverageDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); double result = 0.0, period = 0.0; for (int i = 0; i < intervals.length; i++) { double w = weights[i]; period += w; w *= ((Number) getValue(intervals[i])).doubleValue(); result += w; } return result / period; }
protected Double getAverageDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); double result = 0.0, period = 0.0; for (int i = 0; i < intervals.length; i++) { double w = weights[i]; period += w; w *= ((Number) getValue(intervals[i])).doubleValue(); result += w; } return result / period; }