diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2010-05-08 14:35:02 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2010-05-08 14:35:02 (GMT) |
commit | 0381e3f16a0d390e956c8adbe905d48e92de9cc6 (patch) | |
tree | eda57579d3b4dda56a9e487766ffe849b0372b6d /Lib | |
parent | 161b024b6d2e68295e89f24837a27da599638ea2 (diff) | |
download | cpython-0381e3f16a0d390e956c8adbe905d48e92de9cc6.zip cpython-0381e3f16a0d390e956c8adbe905d48e92de9cc6.tar.gz cpython-0381e3f16a0d390e956c8adbe905d48e92de9cc6.tar.bz2 |
Issue #8644: Improve accuracy of timedelta.total_seconds, by doing intermediate
computations with integer arithmetic instead of floating point.
td.total_seconds() now agrees with td / timedelta(seconds = 1).
Thanks Alexander Belopolsky for the patch.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_datetime.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py index a5b53fb..f65fbca 100644 --- a/Lib/test/test_datetime.py +++ b/Lib/test/test_datetime.py @@ -264,6 +264,11 @@ class TestTimeDelta(HarmlessMixedComparison, unittest.TestCase): for total_seconds in [123456.789012, -123456.789012, 0.123456, 0, 1e6]: td = timedelta(seconds=total_seconds) self.assertEqual(td.total_seconds(), total_seconds) + # Issue8644: Test that td.total_seconds() has the same + # accuracy as td / timedelta(seconds=1). + for ms in [-1, -2, -123]: + td = timedelta(microseconds=ms) + self.assertEqual(td.total_seconds(), td / timedelta(seconds=1)) def test_carries(self): t1 = timedelta(days=100, |