[issue32968] Fraction modulo infinity should behave consistently with other numbers
Serhiy Storchaka
report at bugs.python.org
Thu Mar 1 06:03:33 EST 2018
Serhiy Storchaka <storchaka+cpython at gmail.com> added the comment:
Not all Fractions can be converted to float.
>>> Fraction(2**2000, 3) // 1.0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/serhiy/py/cpython/Lib/fractions.py", line 432, in __floordiv__
return math.floor(a / b)
File "/home/serhiy/py/cpython/Lib/fractions.py", line 378, in forward
return fallback_operator(float(a), b)
File "/home/serhiy/py/cpython/Lib/numbers.py", line 291, in __float__
return self.numerator / self.denominator
OverflowError: integer division result too large for a float
What is surprising that the modulo operation can fail even if the end result could be converted to float.
>>> Fraction(2**2000, 3) % 1
Fraction(1, 3)
>>> Fraction(2**2000, 3) % 1.0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/serhiy/py/cpython/Lib/fractions.py", line 440, in __mod__
div = a // b
File "/home/serhiy/py/cpython/Lib/fractions.py", line 432, in __floordiv__
return math.floor(a / b)
File "/home/serhiy/py/cpython/Lib/fractions.py", line 378, in forward
return fallback_operator(float(a), b)
File "/home/serhiy/py/cpython/Lib/numbers.py", line 291, in __float__
return self.numerator / self.denominator
OverflowError: integer division result too large for a float
----------
nosy: +serhiy.storchaka
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue32968>
_______________________________________
More information about the Python-bugs-list
mailing list