divmod with negative Decimal values
Thomas Passin
list1 at tompassin.net
Tue Aug 22 12:49:01 EDT 2023
On 8/18/2023 5:14 AM, Rob Cliffe via Python-list wrote:
> divmod(Decimal("-1"), 60)
It's not divmod per se, but the modulus operation:
from decimal import Decimal
D1 = Decimal(-1)
D1 % 60 # Decimal(-1)
fmod() performs the same way:
from math import fmod
fmod(-1, 60) # -1.0
From the Python docs on math.fmod:
"math.fmod(x, y)
Return fmod(x, y), as defined by the platform C library. Note that the
Python expression x % y may not return the same result. The intent of
the C standard is that fmod(x, y) be exactly (mathematically; to
infinite precision) equal to x - n*y for some integer n such that the
result has the same sign as x and magnitude less than abs(y). Python’s x
% y returns a result with the sign of y instead, and may not be exactly
computable for float arguments. For example, fmod(-1e-100, 1e100) is
-1e-100, but the result of Python’s -1e-100 % 1e100 is 1e100-1e-100,
which cannot be represented exactly as a float, and rounds to the
surprising 1e100. For this reason, function fmod() is generally
preferred when working with floats, while Python’s x % y is preferred
when working with integers."
I'm not sure this is helpful in a practical way here ...
More information about the Python-list
mailing list