For American numbers

Scott David Daniels Scott.Daniels at Acm.Org
Sat Feb 12 16:38:15 EST 2005


Kind of fun exercise (no good for British English).

     def units(value, units='bytes'):
         magnitude = abs(value)
         if magnitude >= 1000:
             for prefix in ['kilo mega giga tera peta '
                            'exa zetta yotta').split():
                 magnitude /= 1000.
                 if magnitude < 1000.:
                     break
         elif magnitude < 1:
             for prefix in ('milli micro nano pico femto '
                            'atto zepto yocto'.split():
                 magnitude *= 1000.
                 if magnitude >= 1.0:
                     break
             if magnitude < .001:
                 return 'zero %s' % units
         else:
             prefix = ''
         if value < 0:
             return '-%.3f %s%s' % (magnitude, prefix, units)
         return '%.3f %s%s' % (magnitude, prefix, units)

--Scott David Daniels
Scott.Daniels at Acm.Org




More information about the Python-list mailing list