title: How to format a number with comma and specified precision digits in Python
body: <p>The question is for Python 2.6, that is what we have in production.</p>
  
  <p>I have this requirement for formatting a number (like 1234567.0987 or 1234567.0) with comma, and specified number of digits after decimal points. So, it if precision is three, 1234567.0987 may look like 1,234,567.099. </p>
  
  <p>I tried using Locale, as suggested by answers to many questions, the problem is that results in two digits after decimal, which is not acceptable for my requirement. </p>
  
  <p>I tried searching in other places, but did not find any solution, and finally I created a method by my own:</p>
  
  <pre><code>def format_float(value, precision = 4):
      formatString = "%0." + str(precision) + "f"    
      str_val =  formatString % value
      first, second = str_val.split('.')
      first = int(first)
      group = []
      while True:
          result, mod = first / 1000, first % 1000
          group.append(str(mod))
          if result == 0:
              break
          first = result
      group.reverse() 
      return ','.join(group) + '.' + second
  </code></pre>
  
  <p>I tried to run some tests to test out the method and it works fine:</p>
  
  <pre><code># default 4 digits precision
  assert format_float(1234567890.0876543) == '1,234,567,890.0877'
  assert format_float(1.2) == '1.2000'
  assert format_float(1234) == '1,234.0000'
  assert format_float(0) == '0.0000'
  
  # 3 digits precision
  assert format_float(1234567890.0876543, precision=3) == '1,234,567,890.088'
  assert format_float(0, precision=3) == '0.000'
  </code></pre>
  
  <p>Being new to Python, my question is whether this is an acceptable solution. As this formatting has to be done many times in a tight for-loop, I would appreciate if someone can point to a better solution. </p>
  
  <p>Thanks and Regards to All</p>