summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorShantanu <12621235+hauntsaninja@users.noreply.github.com>2023-01-01 08:44:48 (GMT)
committerGitHub <noreply@github.com>2023-01-01 08:44:48 (GMT)
commite83f88a455261ed53530a960f1514ab7af7d2e82 (patch)
tree6808b9d24a7483d4afb9c7df262470b2a06e7618 /Lib
parent71159a8e078bda0c9a39c6cd0980b7ba238dc582 (diff)
downloadcpython-e83f88a455261ed53530a960f1514ab7af7d2e82.zip
cpython-e83f88a455261ed53530a960f1514ab7af7d2e82.tar.gz
cpython-e83f88a455261ed53530a960f1514ab7af7d2e82.tar.bz2
gh-100488: Add is_integer method to fractions.Fraction (#100489)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/fractions.py4
-rw-r--r--Lib/test/test_fractions.py13
2 files changed, 17 insertions, 0 deletions
diff --git a/Lib/fractions.py b/Lib/fractions.py
index 75c7df1..4302f3f 100644
--- a/Lib/fractions.py
+++ b/Lib/fractions.py
@@ -225,6 +225,10 @@ class Fraction(numbers.Rational):
(cls.__name__, dec, type(dec).__name__))
return cls(*dec.as_integer_ratio())
+ def is_integer(self):
+ """Return True if the Fraction is an integer."""
+ return self._denominator == 1
+
def as_integer_ratio(self):
"""Return the integer ratio as a tuple.
diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py
index 7fa9dbe..819d680 100644
--- a/Lib/test/test_fractions.py
+++ b/Lib/test/test_fractions.py
@@ -340,6 +340,19 @@ class FractionTest(unittest.TestCase):
ValueError, "cannot convert NaN to integer ratio",
F.from_decimal, Decimal("snan"))
+ def test_is_integer(self):
+ self.assertTrue(F(1, 1).is_integer())
+ self.assertTrue(F(-1, 1).is_integer())
+ self.assertTrue(F(1, -1).is_integer())
+ self.assertTrue(F(2, 2).is_integer())
+ self.assertTrue(F(-2, 2).is_integer())
+ self.assertTrue(F(2, -2).is_integer())
+
+ self.assertFalse(F(1, 2).is_integer())
+ self.assertFalse(F(-1, 2).is_integer())
+ self.assertFalse(F(1, -2).is_integer())
+ self.assertFalse(F(-1, -2).is_integer())
+
def test_as_integer_ratio(self):
self.assertEqual(F(4, 6).as_integer_ratio(), (2, 3))
self.assertEqual(F(-4, 6).as_integer_ratio(), (-2, 3))