round(0, "ermintrude") succeeded instead of producing a TypeError. Fix this.
This commit is contained in:
parent
9dd5e16c5d
commit
bce783757f
|
@ -367,6 +367,11 @@ class RoundTestCase(unittest.TestCase):
|
||||||
self.assertEqual(round(-INF, n), -INF)
|
self.assertEqual(round(-INF, n), -INF)
|
||||||
self.assertTrue(math.isnan(round(NAN, n)))
|
self.assertTrue(math.isnan(round(NAN, n)))
|
||||||
|
|
||||||
|
self.assertRaises(TypeError, round, INF, 0.0)
|
||||||
|
self.assertRaises(TypeError, round, -INF, 1.0)
|
||||||
|
self.assertRaises(TypeError, round, NAN, "ceci n'est pas un integer")
|
||||||
|
self.assertRaises(TypeError, round, -0.0, 1j)
|
||||||
|
|
||||||
def test_large_n(self):
|
def test_large_n(self):
|
||||||
for n in [324, 325, 400, 2**31-1, 2**31, 2**32, 2**100]:
|
for n in [324, 325, 400, 2**31-1, 2**31, 2**32, 2**100]:
|
||||||
self.assertEqual(round(123.456, n), 123.456)
|
self.assertEqual(round(123.456, n), 123.456)
|
||||||
|
|
|
@ -2130,10 +2130,6 @@ builtin_round(PyObject *self, PyObject *args, PyObject *kwds)
|
||||||
kwlist, &x, &o_ndigits))
|
kwlist, &x, &o_ndigits))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* nans, infinities and zeros round to themselves */
|
|
||||||
if (!Py_IS_FINITE(x) || x == 0.0)
|
|
||||||
return PyFloat_FromDouble(x);
|
|
||||||
|
|
||||||
if (o_ndigits == NULL) {
|
if (o_ndigits == NULL) {
|
||||||
/* second argument defaults to 0 */
|
/* second argument defaults to 0 */
|
||||||
ndigits = 0;
|
ndigits = 0;
|
||||||
|
@ -2145,6 +2141,10 @@ builtin_round(PyObject *self, PyObject *args, PyObject *kwds)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* nans, infinities and zeros round to themselves */
|
||||||
|
if (!Py_IS_FINITE(x) || x == 0.0)
|
||||||
|
return PyFloat_FromDouble(x);
|
||||||
|
|
||||||
/* Deal with extreme values for ndigits. For ndigits > NDIGITS_MAX, x
|
/* Deal with extreme values for ndigits. For ndigits > NDIGITS_MAX, x
|
||||||
always rounds to itself. For ndigits < NDIGITS_MIN, x always
|
always rounds to itself. For ndigits < NDIGITS_MIN, x always
|
||||||
rounds to +-0.0. Here 0.30103 is an upper bound for log10(2). */
|
rounds to +-0.0. Here 0.30103 is an upper bound for log10(2). */
|
||||||
|
|
Loading…
Reference in New Issue