//BB% - Walk Percentage (http://www.fangraphs.com/library/offense/rate-stats/)
        private double CalculateBbRate(CalculatorStats stats)
        {
            var    numerator   = (double)stats.Bb;
            var    denominator = stats.Pa;
            double bbRate      = SafeDivide.divideDouble(numerator, denominator);

            return(Math.Round(bbRate, 3));
        }
        //SLG - Slugging Percentage
        private double CalculateSlg(CalculatorStats stats)
        {
            var numerator   = (double)stats.Singles + stats.X2b * 2 + stats.X3b * 3 + stats.Hr * 4;
            var denominator = stats.Ab;

            double slg = SafeDivide.divideDouble(numerator, denominator);

            return(Math.Round(slg, 3));
        }
        //OBP - On Base Percentage (http://www.fangraphs.com/library/offense/obp/)
        private double CalculateObp(CalculatorStats stats)
        {
            var numerator   = (double)stats.H + stats.Bb + stats.Ibb;
            var denominator = stats.Ab;

            double obp = SafeDivide.divideDouble(numerator, denominator);

            return(Math.Round(obp, 3));
        }
        //ISO - Isolated Power (http://www.fangraphs.com/library/offense/iso/)
        private double CalculateIso(CalculatorStats stats)
        {
            var numerator   = (double)stats.X2b + (2 * stats.X3b) + (3 * stats.Hr);
            var denominator = stats.Ab;

            double iso = SafeDivide.divideDouble(numerator, denominator);

            return(Math.Round(iso, 3));
        }
        //BABIP - Batting Average On Balls In Play (http://www.fangraphs.com/library/offense/babip/)
        private double CalculateBabip(CalculatorStats stats)
        {
            var numerator   = (double)stats.H - stats.Hr;
            var denominator = stats.Ab - stats.So - stats.Hr + stats.Sf;

            double babip = SafeDivide.divideDouble(numerator, denominator);

            return(Math.Round(babip, 3));
        }
        //AVG - Batting Average
        private double CalculateAvg(CalculatorStats stats)
        {
            double avg = SafeDivide.divideDouble((double)stats.H, stats.Ab);

            return(Math.Round(avg, 3));
        }