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