About Rational Number (PEP 239/PEP 240)
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Sun Dec 16 06:41:27 EST 2007
On Sat, 15 Dec 2007 22:20:22 -0800, Dennis Lee Bieber wrote:
> On Sun, 16 Dec 2007 06:09:06 -0000, Steven D'Aprano
> <steve at REMOVE-THIS-cybersource.com.au> declaimed the following in
> comp.lang.python:
>
>> Yes, but my point (badly put, I admit) was that people find fractions
>> far easier to work with than they find floating point numbers. And with
>> any rational data type worth the name, you simply should never get
>> anything as unintuitive as this:
>>
>> >>> from __future__ import division
>> >>> 4/10 + 2/10 == 6/10
>> False
>
> Which only seems to me to prove that having integer division return
> a floating value is a mistake <G>
What integer division? It's floating point division. The / operator
creates floats. If I wanted integer division, I would have used //.
> My background with mostly ancient
> languages (FORTRAN) reads that and sees "0 + 0 == 0",
With some floating point implementations, one can find values such that
x == 0.0 and y == 0.0 but x + y != 0.0.
> and "4.0/10.0 + 2.0/10.0 == 6.0/10.0" automatically makes me leery...
*shrug*
That's the whole point. Floating point math is weird. Rationals are not.
Using floats when you actually need rationals is dangerous.
--
Steven
More information about the Python-list
mailing list