[pyar] Duda con la resta

Tomas Zulberti tzulberti en gmail.com
Jue Jun 8 16:33:52 ART 2017


On Thu, Jun 8, 2017 at 4:28 PM, Varela Matias <matu.varela en gmail.com> wrote:
> Buenas tardes a todos! el otro día explicaba test usando un ejemplo sencillo
> en python (python 3.6), y uno de los test falla y no entiendo por qué.
>
> Tengo este modulo matematica.py con una función resta:
>
> def resta(a, b):
>      return a - b
>
> Nada raro. El test que falla es este:
>
> import unittest
> from matematica import resta
>
>
> class MateTests(unittest.TestCase):
>     def test_resta(self):
>         self.assertEqual(resta(2, 3), -1)
>         self.assertEqual(resta(-1, -1), 0)
>         self.assertEqual(resta(-2, 2), -4)
>         self.assertEqual(resta(2.2, 4.3), -2.1)  # acá da problemas
>
>
> if __name__ == '__main__':
>     unittest.main()
>
> La salida es:
>
> ======================================================================
> FAIL: test_resta (__main__.MateTests)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "test_unittest.py", line 12, in test_resta
>     self.assertEqual(resta(2.2, 4.3), -2.1)
> AssertionError: -2.0999999999999996 != -2.1
>
> ----------------------------------------------------------------------
>
> o_0
>
> ¿Qué me estoy perdiendo?
>

Es un tema reconocido de aritmetica de punto flotante:
https://docs.python.org/2/tutorial/floatingpoint.html o
https://docs.python.org/3/tutorial/floatingpoint.html


Saludos,
TZ


Más información sobre la lista de distribución pyar