diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-09-08 23:02:23 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-09-08 23:02:23 (GMT) |
commit | 7667f58151d5efbbae4f0b1d7178f99dad0d74c0 (patch) | |
tree | 99928f745f6377adbf42d8892f30ec1de75a2559 /Include | |
parent | 69cc487df42d9064a74551ae26a8c115dade3e3a (diff) | |
download | cpython-7667f58151d5efbbae4f0b1d7178f99dad0d74c0.zip cpython-7667f58151d5efbbae4f0b1d7178f99dad0d74c0.tar.gz cpython-7667f58151d5efbbae4f0b1d7178f99dad0d74c0.tar.bz2 |
Issue #23517: fromtimestamp() and utcfromtimestamp() methods of
datetime.datetime now round microseconds to nearest with ties going to nearest
even integer (ROUND_HALF_EVEN), as round(float), instead of rounding towards
-Infinity (ROUND_FLOOR).
pytime API: replace _PyTime_ROUND_HALF_UP with _PyTime_ROUND_HALF_EVEN. Fix
also _PyTime_Divide() for negative numbers.
_PyTime_AsTimeval_impl() now reuses _PyTime_Divide() instead of reimplementing
rounding modes.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/pytime.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Include/pytime.h b/Include/pytime.h index 41fb806..54a0cc4 100644 --- a/Include/pytime.h +++ b/Include/pytime.h @@ -31,9 +31,9 @@ typedef enum { /* Round towards infinity (+inf). For example, used for timeout to wait "at least" N seconds. */ _PyTime_ROUND_CEILING=1, - /* Round to nearest with ties going away from zero. + /* Round to nearest with ties going to nearest even integer. For example, used to round from a Python float. */ - _PyTime_ROUND_HALF_UP + _PyTime_ROUND_HALF_EVEN } _PyTime_round_t; /* Convert a time_t to a PyLong. */ @@ -44,8 +44,9 @@ PyAPI_FUNC(PyObject *) _PyLong_FromTime_t( PyAPI_FUNC(time_t) _PyLong_AsTime_t( PyObject *obj); -/* Round to nearest with ties going away from zero (_PyTime_ROUND_HALF_UP). */ -PyAPI_FUNC(double) _PyTime_RoundHalfUp( +/* Round to nearest with ties going to nearest even integer + (_PyTime_ROUND_HALF_EVEN) */ +PyAPI_FUNC(double) _PyTime_RoundHalfEven( double x); /* Convert a number of seconds, int or float, to time_t. */ |