int/long bug in locale?
Neil Cerutti
horpner at yahoo.com
Tue Aug 28 11:50:06 EDT 2007
On 2007-08-28, tkpmep at hotmail.com <tkpmep at hotmail.com> 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
More information about the Python-list
mailing list