docs: def make_float(s, default='', ignore_commas=True):
      r"""Coerce a string into a float
  
      >>> make_float('12,345')
      12345.0
      >>> make_float('12.345')
      12.345
      >>> make_float('1+2')
      3.0
      >>> make_float('+42.0')
      42.0
      >>> make_float('\r\n-42?\r\n')
      -42.0
      >>> make_float('$42.42')
      42.42
      >>> make_float('B-52')
      -52.0
      >>> make_float('1.2 x 10^34')
      1.2e+34
      >>> make_float(float('nan'))
      nan
      >>> make_float(float('-INF'))
      -inf
      """
      if ignore_commas and isinstance(s, basestring):
          s = s.replace(',', '')
      try:
          return float(s)
      except (IndexError, ValueError, AttributeError, TypeError):
          try:
              return float(str(s))
          except ValueError:
              try:
                  return float(normalize_scientific_notation(str(s), ignore_commas))
              except ValueError:
                  try:
                      return float(first_digits(s))
                  except ValueError:
                      return default