Kaydet (Commit) 6deb1bf8 authored tarafından Guido van Rossum's avatar Guido van Rossum

Use pow() instead of repeated multiplication by 10 in round(x, n).

üst 74e68c75
......@@ -771,10 +771,9 @@ float_round(PyObject *v, PyObject *args)
{
#define UNDEF_NDIGITS (-0x7fffffff) /* Unlikely ndigits value */
double x;
double f;
double f = 1.0;
double flr, cil;
double rounded;
int i;
int ndigits = UNDEF_NDIGITS;
if (!PyArg_ParseTuple(args, "|i", &ndigits))
......@@ -783,13 +782,7 @@ float_round(PyObject *v, PyObject *args)
x = PyFloat_AsDouble(v);
if (ndigits != UNDEF_NDIGITS) {
f = 1.0;
i = abs(ndigits);
while (--i >= 0)
f = f*10.0;
if (ndigits < 0)
x /= f;
else
f = pow(10.0, ndigits);
x *= f;
}
......@@ -804,9 +797,6 @@ float_round(PyObject *v, PyObject *args)
rounded = flr;
if (ndigits != UNDEF_NDIGITS) {
if (ndigits < 0)
rounded *= f;
else
rounded /= f;
return PyFloat_FromDouble(rounded);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment