summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2010-05-08 14:35:02 (GMT)
committerMark Dickinson <dickinsm@gmail.com>2010-05-08 14:35:02 (GMT)
commit0381e3f16a0d390e956c8adbe905d48e92de9cc6 (patch)
treeeda57579d3b4dda56a9e487766ffe849b0372b6d /Lib
parent161b024b6d2e68295e89f24837a27da599638ea2 (diff)
downloadcpython-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.py5
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,