New submission from Mike Williamson:

Ran a test that I expected to pass.  When the test failed, I was struck by the 
strange (incorrect) assertion claim when using unittest.assertAlmostEqual:


AssertionError: 32.78 != 32.775 within 2 places


Uhmm... yes it does!
I delved in, discovering that assertAlmostEquals simply calls round.  So, I 
tried it with round, shown below:


>>> round(32.775, 2)
32.77
>>> round(32.785, 2)
32.78
>>> round(32.745, 2)
32.74
>>> round(32.746, 2)
32.75


I then looked at the documentation, to understand whether this odd behavior is 
indeed expected.  I saw (on 
https://docs.python.org/3/library/functions.html#round ):

---

If two multiples are equally close, rounding is done toward the even choice 
(so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2).

---

However, as you can see, this is not the behavior I'm experiencing. So, it 
looks like a real bug.

I am attaching the two files where I was running the unit tests, but I'm not 
sure you really need them.


Thank you!

----------
components: Library (Lib)
files: bad_tests.py
messages: 279456
nosy: lazarillo
priority: normal
severity: normal
status: open
title: round seems to provide floor, not proper rounding
type: behavior
versions: Python 3.5
Added file: http://bugs.python.org/file45224/bad_tests.py

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

Reply via email to