[Mark Dickinson] > It occurs to me that any doctests that depend on the precise form of > repr(x) are, in a sense, already broken, since 2.x makes no guarantees > about repr(x) being consistent across platforms.
The doctest documentation has warned about this forever (look near the end of the "Warnings" section, http://docs.python.org/library/doctest.html#warnings ). > It's just an accident that repr(x) in 2.x pretty much *is* consistent across > major platforms, so long as you steer clear of IEEE 754 oddities like > subnormals, > nans and infinities. If you don't consider Windows to be a major platform ;-) Besides that there's just no guessing what the Microsoft double->string routines will produce for the 17th digit, the MS routines always produce 3 digits for the exponent in scientific notation, while AFAIK all other platforms produce 2 digits when 3 aren't necessary. For example, on Windows under Python 2.x: >>> repr(1e47) '1e+047' >>> repr(1e-47) '9.9999999999999997e-048' and "everywhere else": >>> repr(1e47) '1e+47' >>> repr(1e-47) '9.9999999999999997e-48' The leading 0 in the Window's exponents is enough to break a naive doctest too -- and repr(x) does produce scientific notation for "almost all" finite doubles. Why people are obsessed with the relative handful of doubles between 1 and 1000 is beyond me ;-) As doctest's original author, I have no sympathy for users who burn themselves with float output. Of course it's open to question whether I have sympathy for anyone, ever, but that's not the issue here ;-) _______________________________________________ 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