for / while else doesn't make sense

Marko Rauhamaa marko at pacujo.net
Sun May 22 11:50:59 EDT 2016


Chris Angelico <rosuav at gmail.com>:

> On Mon, May 23, 2016 at 1:19 AM, Steven D'Aprano <steve at pearwood.info> wrote:
>> Okay, now I'm confused. How is 1/2 returning 0.5 the language not doing what
>> you've told it to do?
>
> That isn't the problem. With binary floats, 1/2 can be perfectly
> represented, so you have no trouble anywhere. The problem comes when
> you then try 1/5. What do you get? 3602879701896397/18014398509481984.
> Python shows that as 0.2. Then you do some more arithmetic, and the
> veil is pierced, and you discover that 1/5 doesn't actually return
> 0.2, but just something really really close to it - which it tells you
> is 0.2.
>
> I'm not saying that having 1/5 return 0 is better, but I'd like a
> broad acceptance that 0.2 is imperfect - that, in fact, *every* option
> is imperfect.

Ah, that reminds me of an ancient joke:

   Ask an engineer what is two times two. He'll take out his slide rule,
   quickly move the slider and reply: "Approximately four."

I remember learning my first programming language, Basic, when I was 16.
One of the very first things to notice was the way "the computer" worked
with approximations.


Marko



More information about the Python-list mailing list