original_string: public function toBest($precision = null)
      {
          $fromUnit = UnitResolver::resolve($this->from);
          $base = $this->getBase() == 2 ? 1024 : 1000;
          $converted = $this->start;
          while ($converted >= 1) {
              $fromUnit++;
              $result = $this->div($this->start, pow($base, $fromUnit), $precision);
              if ($result <= 1) return $converted;
              $converted = $result;
          }
          return $converted;
      }
code: public function toBest($precision = null)
      {
          $fromUnit = UnitResolver::resolve($this->from);
          $base = $this->getBase() == 2 ? 1024 : 1000;
          $converted = $this->start;
          while ($converted >= 1) {
              $fromUnit++;
              $result = $this->div($this->start, pow($base, $fromUnit), $precision);
              if ($result <= 1) return $converted;
              $converted = $result;
          }
          return $converted;
      }
code_tokens: public function toBest ( $ precision = null ) { $ fromUnit = UnitResolver :: resolve ( $ this -> from ) ; $ base = $ this -> getBase ( ) == 2 ? 1024 : 1000 ; $ converted = $ this -> start ; while ( $ converted >= 1 ) { $ fromUnit ++ ; $ result = $ this -> div ( $ this -> start , pow ( $ base , $ fromUnit ) , $ precision ) ; if ( $ result <= 1 ) return $ converted ; $ converted = $ result ; } return $ converted ; }
docstring: Convert the start value to it's highest whole unit.
  Accespts an optional precision for how many significant digits
  to retain
  
  @param int|null $precision
  @return float
docstring_tokens: Convert the start value to it s highest whole unit . Accespts an optional precision for how many significant digits to retain