
python-checkins at python
Nov 24, 2009, 4:21 AM
Post #1 of 1
(89 views)
Permalink
|
|
r76483 - in python/trunk: Lib/test/test_float.py Python/bltinmodule.c
|
|
Author: mark.dickinson Date: Tue Nov 24 11:54:58 2009 New Revision: 76483 Log: round(0, "ermintrude") succeeded instead of producing a TypeError. Fix this. Modified: python/trunk/Lib/test/test_float.py python/trunk/Python/bltinmodule.c Modified: python/trunk/Lib/test/test_float.py ============================================================================== --- python/trunk/Lib/test/test_float.py (original) +++ python/trunk/Lib/test/test_float.py Tue Nov 24 11:54:58 2009 @@ -367,6 +367,11 @@ 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) Modified: python/trunk/Python/bltinmodule.c ============================================================================== --- python/trunk/Python/bltinmodule.c (original) +++ python/trunk/Python/bltinmodule.c Tue Nov 24 11:54:58 2009 @@ -2130,10 +2130,6 @@ 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; @@ -2145,6 +2141,10 @@ 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). */ _______________________________________________ Python-checkins mailing list Python-checkins [at] python http://mail.python.org/mailman/listinfo/python-checkins
|