[issue39738] mod operation with large number is not correct.

Steven D'Aprano report at bugs.python.org
Mon Feb 24 04:42:47 EST 2020


Steven D'Aprano <steve+python at pearwood.info> added the comment:

This is a floating point issue, not a bug. Floats inherently only have a limited precision available, so they are not always the exact number you think they are.

Using 1e9 forces the result to be a float, which introduces rounding errors into the calculation. If you use an exact integer, the calculation is exact:


py> 151476660579404160000-151476660579404160000//1000000007 * (10**9+7)
67543367
py> 151476660579404160000 % (10**9+7)
67543367


*This is not a Python bug* this is an inherent limitation of floating point numbers and the same issues will occur in any language that uses floats.

https://docs.python.org/3/faq/design.html#why-am-i-getting-strange-results-with-simple-arithmetic-operations

----------
nosy: +steven.daprano
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue39738>
_______________________________________


More information about the Python-bugs-list mailing list