parameters: (n, e)
docstring: Given integers n and e, return n * 10**e if it's an integer, else None.
  
      The computation is designed to avoid computing large powers of 10
      unnecessarily.
  
      >>> _decimal_lshift_exact(3, 4)
      30000
      >>> _decimal_lshift_exact(300, -999999999)  # returns None
docstring_summary: Given integers n and e, return n * 10**e if it's an integer, else None.
docstring_tokens: Given integers n and e return n * 10 ** e if it s an integer else None .
function: def _decimal_lshift_exact(n, e):
      """ Given integers n and e, return n * 10**e if it's an integer, else None.
  
      The computation is designed to avoid computing large powers of 10
      unnecessarily.
  
      >>> _decimal_lshift_exact(3, 4)
      30000
      >>> _decimal_lshift_exact(300, -999999999)  # returns None
  
      """
      if n == 0:
          return 0
      elif e >= 0:
          return n * 10**e
      else:
          # val_n = largest power of 10 dividing n.
          str_n = str(abs(n))
          val_n = len(str_n) - len(str_n.rstrip('0'))
          return None if val_n < -e else n // 10**-e
function_tokens: def _decimal_lshift_exact ( n , e ) : if n == 0 : return 0 elif e >= 0 : return n * 10 ** e else : # val_n = largest power of 10 dividing n. str_n = str ( abs ( n ) ) val_n = len ( str_n ) - len ( str_n . rstrip ( '0' ) ) return None if val_n < - e else n // 10 ** - e