Le 19/11/2021 à 12:43, ast a écrit :
Le 19/11/2021 à 03:51, MRAB a écrit :
On 2021-11-19 02:40, 2qdxy4rzwzuui...@potatochowder.com wrote:
On 2021-11-18 at 23:16:32 -0300,
René Silva Valdés <rene.silva.val...@gmail.com> wrote:
Hello, I would like to report the following issue:
Working with floats i noticed that:
int(23.99999999999999/12) returns 1, and
int(23.999999999999999/12) returns 2
This implies that int() function is rounding ...
It's not int() that's doing the rounding; that second numerator is being
rounded before being divided by 12:
Python 3.9.7 (default, Oct 10 2021, 15:13:22)
[GCC 11.1.0] on linux
Type "help", "copyright", "credits" or "license" for more
information.
>>> 23.999999999999999
24.0
>>> (23.999999999999999).hex()
'0x1.8000000000000p+4'
I think this is a bit clearer because it shows that it's not just
being rounded for display:
Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC
v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 23.99999999999999 == 24
False
>>> 23.999999999999999 == 24
True
>>> 0.3 + 0.3 + 0.3 == 0.9
False
Better use math.isclose to test equality between 2 floats
>>> import math
>>> math.isclose(0.3 + 0.3 + 0.3, 0.9)
True
--
https://mail.python.org/mailman/listinfo/python-list