self.assertEqual(round(-INF, n), -INF)
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):
for n in [324, 325, 400, 2**31-1, 2**31, 2**32, 2**100]:
self.assertEqual(round(123.456, n), 123.456)
kwlist, &x, &o_ndigits))
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) {
/* second argument defaults to 0 */
ndigits = 0;
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
always rounds to itself. For ndigits < NDIGITS_MIN, x always
rounds to +-0.0. Here 0.30103 is an upper bound for log10(2). */