Mark Dickinson <dicki...@gmail.com> added the comment:

> Shouldn't the two approaches provide the same answer?

In a word, no. :-)

math.floor(1/0.01) involves *two* operations, and there's an intermediate 
rounding step which happens to round the true mathematical result of 1/0.01 up 
to 100.0. Taking the floor of that then (of course) gives 100.0.

1//0.01 is the single-operation equivalent, that doesn't include an 
intermediate round.

There are lots of other cases where a combination of two or more operations is 
mathematically equivalent to a single operation, but produces a different 
result due to an intermediate round; for example, things like `log(n) / log(2)` 
versus `log2(n)`, or `round(x, 2)` versus `round(100.0*x)/100.0`.

There's unfortunately no way to square the circle here that doesn't cause 
surprises in at least some corner cases.

I'm almost sure this issue is a duplicate, but I haven't found a good target 
for that duplicate yet. I'll continue searching.

----------
nosy: +mark.dickinson

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39703>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to