original_string: public function numericAggregate($function, $columns = ['*'])
      {
          $result = $this->aggregate($function, $columns);
  
          // If there is no result, we can obviously just return 0 here. Next, we will check
          // if the result is an integer or float. If it is already one of these two data
          // types we can just return the result as-is, otherwise we will convert this.
          if (! $result) {
              return 0;
          }
  
          if (is_int($result) || is_float($result)) {
              return $result;
          }
  
          // If the result doesn't contain a decimal place, we will assume it is an int then
          // cast it to one. When it does we will cast it to a float since it needs to be
          // cast to the expected data type for the developers out of pure convenience.
          return strpos((string) $result, '.') === false
                  ? (int) $result : (float) $result;
      }
code: public function numericAggregate($function, $columns = ['*'])
      {
          $result = $this->aggregate($function, $columns);
  
          // If there is no result, we can obviously just return 0 here. Next, we will check
          // if the result is an integer or float. If it is already one of these two data
          // types we can just return the result as-is, otherwise we will convert this.
          if (! $result) {
              return 0;
          }
  
          if (is_int($result) || is_float($result)) {
              return $result;
          }
  
          // If the result doesn't contain a decimal place, we will assume it is an int then
          // cast it to one. When it does we will cast it to a float since it needs to be
          // cast to the expected data type for the developers out of pure convenience.
          return strpos((string) $result, '.') === false
                  ? (int) $result : (float) $result;
      }
code_tokens: public function numericAggregate ( $ function , $ columns = [ '*' ] ) { $ result = $ this -> aggregate ( $ function , $ columns ) ; // If there is no result, we can obviously just return 0 here. Next, we will check // if the result is an integer or float. If it is already one of these two data // types we can just return the result as-is, otherwise we will convert this. if ( ! $ result ) { return 0 ; } if ( is_int ( $ result ) || is_float ( $ result ) ) { return $ result ; } // If the result doesn't contain a decimal place, we will assume it is an int then // cast it to one. When it does we will cast it to a float since it needs to be // cast to the expected data type for the developers out of pure convenience. return strpos ( ( string ) $ result , '.' ) === false ? ( int ) $ result : ( float ) $ result ; }
docstring: Execute a numeric aggregate function on the database.
  
  @param  string  $function
  @param  array   $columns
  @return float|int
docstring_tokens: Execute a numeric aggregate function on the database .