Browse Source

Issue 19933: Provide default argument for ndigits in round. Patch by Vajrasky Kok.

pull/9921/head
Steve Dower 11 years ago
parent
commit
cb39d1f466
  1. 4
      Doc/library/functions.rst
  2. 8
      Lib/test/test_float.py
  3. 3
      Misc/NEWS
  4. 5
      Objects/floatobject.c

4
Doc/library/functions.rst

@ -1225,8 +1225,8 @@ are always available. They are listed here in alphabetical order.
.. function:: round(number[, ndigits]) .. function:: round(number[, ndigits])
Return the floating point value *number* rounded to *ndigits* digits after 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 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 closest multiple of 10 to the power minus *ndigits*; if two multiples are

8
Lib/test/test_float.py

@ -773,6 +773,14 @@ class RoundTestCase(unittest.TestCase):
test(sfmt, NAN, ' nan') test(sfmt, NAN, ' nan')
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 # Beginning with Python 2.6 float has cross platform compatible
# ways to create and represent inf and nan # ways to create and represent inf and nan

3
Misc/NEWS

@ -36,6 +36,9 @@ Core and Builtins
Library Library
------- -------
- Issue 19933: Provide default argument for ndigits in round. Patch by
Vajrasky Kok.
- Issue #23193: Add a numeric_owner parameter to - Issue #23193: Add a numeric_owner parameter to
tarfile.TarFile.extract and tarfile.TarFile.extractall. Patch by tarfile.TarFile.extract and tarfile.TarFile.extractall. Patch by
Michael Vogt and Eric Smith. Michael Vogt and Eric Smith.

5
Objects/floatobject.c

@ -986,8 +986,9 @@ float_round(PyObject *v, PyObject *args)
x = PyFloat_AsDouble(v); x = PyFloat_AsDouble(v);
if (!PyArg_ParseTuple(args, "|O", &o_ndigits)) if (!PyArg_ParseTuple(args, "|O", &o_ndigits))
return NULL; 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); rounded = round(x);
if (fabs(x-rounded) == 0.5) if (fabs(x-rounded) == 0.5)
/* halfway case: round to even */ /* halfway case: round to even */

Loading…
Cancel
Save