mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Issue 19933: Provide default argument for ndigits in round. Patch by Vajrasky Kok.
This commit is contained in:
parent
807b80d4ec
commit
cb39d1f466
4 changed files with 16 additions and 4 deletions
|
@ -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
|
the decimal point. If *ndigits* is omitted, it returns the nearest integer
|
||||||
to ``number.__round__(ndigits)``.
|
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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) {
|
if (o_ndigits == NULL || o_ndigits == Py_None) {
|
||||||
/* single-argument round: round to nearest integer */
|
/* 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…
Add table
Add a link
Reference in a new issue