Dan Bishop <[EMAIL PROTECTED]> writes:
> > I was surprised to find that gives an exact (integer, not
> > floating-point) answer.  Still, I think it's better to say 2**64
> > which also works for (e.g.) 2**10000 where math.pow(2,10000)
> > raises an exception.
> 
> It *is* binary floating point.  Powers of 2 are exactly
> representable.  Of course, it doesn't give an exact answer in general.
> 
> >>> int(math.pow(10, 23))
> 99999999999999991611392L

Oh yikes, good point.  math.pow(2,64) is really not appropriate for
what the OP wanted, I'd say.  If you want integer exponentiation, then
write it that way.  Don't do a floating point exponentiation that just
happens to not lose precision for the specific example.

    >>> int(math.pow(3,50)) # wrong
    717897987691852578422784L
    >>> 3**50  # right
    717897987691852588770249L
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to