File tree 1 file changed +9
-3
lines changed
1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -429,9 +429,15 @@ def microseconds(self):
429
429
# Instance methods
430
430
def total_seconds (self ):
431
431
"""Return the total number of seconds contained in the duration."""
432
- return (
433
- (self ._days * 86400 + self ._seconds ) * 10 ** 6 + self ._microseconds
434
- ) / 10 ** 6
432
+ # If the duration is less than a threshold duration, and microseconds
433
+ # is nonzero, then the result is a float. Otherwise, the result is a
434
+ # (possibly long) integer. This differs from standard Python where the
435
+ # result is always a float, because the precision of CircuitPython
436
+ # floats is considerably smaller than on standard Python.
437
+ seconds = self ._days * 86400 + self ._seconds
438
+ if self ._microseconds != 0 and abs (seconds ) < (1 << 21 ):
439
+ seconds += self ._microseconds / 10 ** 6
440
+ return seconds
435
441
436
442
def __repr__ (self ):
437
443
args = []
You can’t perform that action at this time.
0 commit comments