A different PEP suggests adding a builtin rational type to Python. This PEP suggests changing the ddd.ddd float literal to a rational in Python, and modifying non-integer division to return it.
BDFL PronouncementThis PEP is rejected. The needs outlined in the rationale section have been addressed to some extent by the acceptance of PEP 327 for decimal arithmetic. Guido also noted, “Rational arithmetic was the default ‘exact’ arithmetic in ABC and it did not work out as expected”. See the python-dev discussion on 17 June 2005 [1].
RationaleRational numbers are useful for exact and unsurprising arithmetic. They give the correct results people have been taught in various math classes. Making the “obvious” non-integer type one with more predictable semantics will surprise new programmers less than using floating point numbers. As quite a few posts on c.l.py and on tutor@python.org have shown, people often get bit by strange semantics of floating point numbers: for example, round(0.98, 2)
still gives 0.97999999999999998.
Literals conforming to the regular expression '\d*.\d*'
will be rational numbers.
The only backwards compatible issue is the type of literals mentioned above. The following migration is suggested:
from __future__ import rational_literals
to cause all such literals to be treated as rational numbers.__future__
statement. The warning message will contain information about the __future__
statement, and indicate that to get floating point literals, they should be suffixed with “e0”.Rationals are slow and memory intensive! (Relax, I’m not taking floats away, I’m just adding two more characters. 1e0
will still be a float)
Rationals must present themselves as a decimal float or they will be horrible for users expecting decimals (i.e. str(.5)
should return '.5'
and not '1/2'
). This means that many rationals must be truncated at some point, which gives us a new loss of precision.
This document has been placed in the public domain.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4