int/long bug in locale?

tkpmep at hotmail.com tkpmep at hotmail.com
Tue Aug 28 10:03:29 EDT 2007


To pretty up some numbers stored as strings, I used locale to format
them with commas. I then found the following error:

>>> 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?

Sincerely

Thomas Philips




More information about the Python-list mailing list