I'm am relatively new to Python but use it daily. Today, I went looking for a function, like PHP's number_function, that will take a number and return a string with number formatted with grouped thousands and the decimal portion rounded to a given number of places. This is certainly needed when you want to take a floating-point value from a database and display it as currency, for instance. I could not find what I was looking for so I wrote the following function. I hope either (a) I've provided something useful or (b) someone can tell me what I *should* have done! Thanks.

import math

def number_format(num, places=0):
   """Format a number with grouped thousands and given decimal places"""

   #is_negative = (num < 0)
   #if is_negative:
   #    num = -num

   places = max(0,places)
   tmp = "%.*f" % (places, num)
   point = tmp.find(".")
   integer = (point == -1) and tmp or tmp[:point]
   decimal = (point != -1) and tmp[point:] or ""

   count = commas = 0
   formatted = []
   for i in range(len(integer) - 1, 0, -1):
       count += 1
       formatted.append(integer[i])
       if count % 3 == 0:
           formatted.append(",")

   integer = "".join(formatted[::-1])
   return integer+decimal
begin:vcard
fn:Edward Hartfield
n:Hartfield;Edward
org:BungeeCraft Technologies
adr;dom:;;4824 W Medford Avenue;Milwaukee;Wisconsin;53216
email;internet:[EMAIL PROTECTED]
title:President
tel;work:414 839-2387
tel;fax:414 449-9105
note:Milwaukee-based BungeeCraft Technologies provides cost-effective technology solutions for small and mid-sized businesses. From aligning our clients' business and IT strategies to improving business processes and deploying and supporting solutions that accelerate business results, we are able and ready to provide YOU with comprehensive information technology solutions and services.
x-mozilla-html:FALSE
url:http://www.bungeecraft.com
version:2.1
end:vcard

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to