On Aug 3, 2006, at 9:43 PM, Nick Maclaren wrote:

Ka-Ping Yee <[EMAIL PROTECTED]> wrote:

That's my experience as well.  In my opinion, the purpose of round()
is most commonly described as "to make an integer".  So it should
yield an integer.

Grrk.  No, that logic is flawed.

There are algorithms where the operation of rounding (or truncation)
is needed, but where the value may be larger than can be held in an
integer, and that is not an error.

Is that really true for python? Python integers are unbounded in magnitute, they are not the same as int or long in C, therefore any float except exceptional values like NaN can be converted to an integer value. The converse is not true, python integers can contain values that are larger than any float (aka C's double).

>>> v = 1e200
>>> int(v)
999999999999999969733122212510361659474503275455023626482417509503468484 355540755341963384047062518680275124159738824081821357343682784846393850 41047239877871023591066789981811181813306167128854888448L
>>> type(v)
<type 'float'>
>>> t = int(v)
>>> t ** 2
999999999999999939466244425020724235032897553743712247233978162062705420 868772363027380308001932133054230558394675289323324880702327952854432161 552216024892912466614409626956153314556116473848998339762109232220813863 099472521374735119038509661875525607726747258646821773646868361139842288 412173261267039669530389442594522433115448347796339690544576171593343952 0020822843337114038314499908946523848704L
>>> float(t**2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: long int too large to convert to float


Ronald

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to