A funnily inconsistent behavior of int and float

Colin J. Williams fn681 at ncf.ca
Mon Apr 7 19:31:36 EDT 2008


Terry Reedy wrote:
> "Mark Dickinson" <dickinsm at gmail.com> wrote in message 
> news:1d11875a-470a-489f-910a-b420a145eb61 at a1g2000hsb.googlegroups.com...
> | On Apr 7, 6:43 am, "Colin J. Williams" <fn... at ncf.ca> wrote:
> | > This is good but the documentation for
> | > 3.0 is missing the syntax documentation
> | > from 2.5
> |
> | Is
> |
> | 
> http://docs.python.org/dev/3.0/reference/lexical_analysis.html#integer-literals
> |
> | the documentation that you're looking for?
Yes, thanks.  I missed it.

Colin W.
> |
> | But it seems to me that Lie's original point isn't really
> | about integer *literals* anyway---it's about the behaviour
> | of the built-in int() function when applied to a string.  So
> |
> | http://docs.python.org/dev/3.0/library/functions.html#int
> |
> | is probably the appropriate place in the documentation.  And
> | I agree that it could be made clearer exactly what strings are
> | acceptable here.
> 
> Agreed.
> 
> It says "If radix is zero, the interpretation is the same as for integer 
> literals."
> But integer literals are unsigned.  Is radix 0 any different from the 
> default of radix 10?
> 
> It also says "If the argument is a string, it must contain a possibly 
> signed number of arbitrary size, possibly embedded in whitespace."  But 
> only integers, not 'numbers' as some would understand that, are accepted.
> 
> My suggestions:
> 1. Change signature to: int([number | string[, radix]).
> This makes it clear that radix can only follow a string without having to 
> say so in the text.
> 
> 2. Replace text with:
> Convert a number or string to an integer.  If no arguments are given, 
> return 0.  If a number is given, return number.__int__().  Conversion of 
> floating point numbers to integers truncates towards zero.  A string must 
> be a base-radix integer literal optionally preceded by '+' or '-' (with no 
> space in between) and optionally surrounded by whitespace.  A base-n 
> literal consists of the digits 0 to n-1, with 'a' to 'z' (or 'A' to 'Z') 
> having values 10 to 35.  The default radix is 10. The allowed values are 0 
> and 2-36, with 0 the same as 10.
> 
> If 0 is not the same as 10, the last would have to be changed, but I could 
> not detect any difference in a quick test.
> 
> After looking at any comments here, I will consider submitting these to the 
> tracker.
> 
> Terry Jan Reedy
> 
> 
> 



More information about the Python-list mailing list