Issue #8644: Improve accuracy of timedelta.total_seconds method.

(Backport of r80979 to py3k.)  Thanks Alexander Belopolsky.
This commit is contained in:
Mark Dickinson 2010-05-09 09:30:06 +00:00
parent 860852fdf4
commit 7000e9e01b
4 changed files with 35 additions and 6 deletions

View file

@ -2096,9 +2096,25 @@ delta_getstate(PyDateTime_Delta *self)
static PyObject *
delta_total_seconds(PyObject *self)
{
return PyFloat_FromDouble(GET_TD_MICROSECONDS(self) / 1000000.0 +
GET_TD_SECONDS(self) +
GET_TD_DAYS(self) * 24.0 * 3600.0);
PyObject *total_seconds;
PyObject *total_microseconds;
PyObject *one_million;
total_microseconds = delta_to_microseconds((PyDateTime_Delta *)self);
if (total_microseconds == NULL)
return NULL;
one_million = PyLong_FromLong(1000000L);
if (one_million == NULL) {
Py_DECREF(total_microseconds);
return NULL;
}
total_seconds = PyNumber_TrueDivide(total_microseconds, one_million);
Py_DECREF(total_microseconds);
Py_DECREF(one_million);
return total_seconds;
}
static PyObject *