diff options
author | Steve Dower <steve.dower@microsoft.com> | 2015-04-15 20:10:59 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2015-04-15 20:10:59 (GMT) |
commit | cb39d1f466eeecbec969f50a5df609eb0a863084 (patch) | |
tree | cd4fd87d2cc51a15730a5e061075a5da8e069b9b | |
parent | 807b80d4ec9d9dd2c0f5e6a4bf07caa7c90625e1 (diff) | |
download | cpython-cb39d1f466eeecbec969f50a5df609eb0a863084.zip cpython-cb39d1f466eeecbec969f50a5df609eb0a863084.tar.gz cpython-cb39d1f466eeecbec969f50a5df609eb0a863084.tar.bz2 |
Issue 19933: Provide default argument for ndigits in round. Patch by Vajrasky Kok.
-rw-r--r-- | Doc/library/functions.rst | 4 | ||||
-rw-r--r-- | Lib/test/test_float.py | 8 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Objects/floatobject.c | 5 |
4 files changed, 16 insertions, 4 deletions
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 456dd09..e982ceb 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1225,8 +1225,8 @@ are always available. They are listed here in alphabetical order. .. function:: round(number[, ndigits]) Return the floating point value *number* rounded to *ndigits* digits after - the decimal point. If *ndigits* is omitted, it defaults to zero. Delegates - to ``number.__round__(ndigits)``. + the decimal point. If *ndigits* is omitted, it returns the nearest integer + to its input. Delegates to ``number.__round__(ndigits)``. For the built-in types supporting :func:`round`, values are rounded to the closest multiple of 10 to the power minus *ndigits*; if two multiples are diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index 071d217..4251090 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -773,6 +773,14 @@ class RoundTestCase(unittest.TestCase): test(sfmt, NAN, ' nan') test(sfmt, -NAN, ' nan') + def test_None_ndigits(self): + for x in round(1.23), round(1.23, None), round(1.23, ndigits=None): + self.assertEqual(x, 1) + self.assertIsInstance(x, int) + for x in round(1.78), round(1.78, None), round(1.78, ndigits=None): + self.assertEqual(x, 2) + self.assertIsInstance(x, int) + # Beginning with Python 2.6 float has cross platform compatible # ways to create and represent inf and nan @@ -36,6 +36,9 @@ Core and Builtins Library ------- +- Issue 19933: Provide default argument for ndigits in round. Patch by + Vajrasky Kok. + - Issue #23193: Add a numeric_owner parameter to tarfile.TarFile.extract and tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith. diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 1d369f9..d681981 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -986,8 +986,9 @@ float_round(PyObject *v, PyObject *args) x = PyFloat_AsDouble(v); if (!PyArg_ParseTuple(args, "|O", &o_ndigits)) return NULL; - if (o_ndigits == NULL) { - /* single-argument round: round to nearest integer */ + if (o_ndigits == NULL || o_ndigits == Py_None) { + /* single-argument round or with None ndigits: + * round to nearest integer */ rounded = round(x); if (fabs(x-rounded) == 0.5) /* halfway case: round to even */ |