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

This commit is contained in:
Guido van Rossum 2007-08-31 00:27:03 +00:00
parent 74e68c751f
commit 6deb1bf83f

View file

@ -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);
}