Batista, Facundo wrote: > There's a thread in the standard list (with this very Subject) that > talks about implicit coercing with "%d" in strings replacement. > > jfouhy posted this example: > > >>> pow(2, 31) > 2147483648L > >>> '%d' % 2147483647.0 # python will convert to int > '2147483647' > >>> '%d' % 2147483648.0 # too big for an int, so error. > Traceback (most recent call last): > File "<stdin>", line 1, in ? > TypeError: int argument required > >>> '%d' % long(2147483648.0) # but yet, no trouble accepting a > long. > '2147483648' > >>> '%d' % int(2147483648.0) # and int() converts to long anyway > '2147483648' > > > I think that here's a bug, but don't know where: > I say it is in the conversion from float not trying it as a long to make it work. I expect the conversion types in string interpolation to convert the argument as needed to meet the conversion type. Since a float can safely be converted to a long that is what should be done since in the eyes of Python int == long. Just think of how printf() handles it; it just interprets the argument as what the conversion type says it is. I think Python should do the same. -Brett
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4