double AverageIgnoreNullAnalysis::analyze(const PointList &values) const { if(values.isEmpty()) { return 0; } const double sum = AbstractAnalysis::listSum(values); int length = 0; foreach(const Point value, values.points()) { if(value != 0) { length++; } } if(length == 0) { return 0.0; } const double result = sum / static_cast<double>(length); return result; }