On 2007-08-28, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: >>>> import locale > >>>>locale.setlocale(locale.LC_ALL, 'English_United States.1252') > 'English_United States.1252' > >>>> locale.format('%d', float('2244012500.0000'), grouping = True) > > Traceback (most recent call last): > File "<pyshell#28>", line 1, in <module> > locale.format('%d', float('2244012500.0000'), grouping = True) > File "C:\Python25\lib\locale.py", line 145, in format > formatted = percent % value > TypeError: int argument required > > However, if the number is <= 2**31-1, it works just fine: >>>>locale.format('%d', float('224401250.0000'), grouping = True) > '224,401,250' > > Interestingly, if I first convert the floats to ints, , the function > works just fine, even if the numbers exceed 2**31-1: >>>> locale.format('%d', int(float('2244012500.0000')), grouping = True) > '2,244,012,500' > > Is there an int/long related bug lurking in locale?
If it is a bug, it is not in the locale code. >>> '%d' % float('224401250000.0000') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: int argument required The documentation for the string formating operation doesn't specify what happens when you convert a non-int with specifier '%d'. In defense of your code, there's also no explicit requirement to do that. http://docs.python.org/lib/typesseq-strings.html -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list