    # File lib/core-uncommon/facets/array/percentile.rb, line 15
      def percentile(p)
        sorted_array = self.sort
        rank = (p.to_f / 100) * (self.length + 1)

        if self.length == 0
          return nil
        elsif rank.to_i == rank #fractional_part?
          sample_0 = sorted_array[rank.truncate - 1]
          sample_1 = sorted_array[rank.truncate]

          fractional_part = rank.abs.modulo(1)
          return (fractional_part * (sample_1 - sample_0)) + sample_0
        else
          return sorted_array[rank.to_i - 1]
        end
      end