You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何获取截断取模与向下取整取模的运算结果

Python 截断取模实现方案
  • Python 原生%运算符默认采用向下取整取模逻辑,和向下取整除法//配套,满足恒等式a == (a // b) * b + (a % b),余数符号和除数保持一致。
  • 你需要的**截断取模(向零取整取模)**不需要完全从零自行编码实现,Python标准库已经提供了对应支持:math模块的math.fmod()就是原生的截断取模实现,计算时商向零方向截断,余数符号和被除数保持一致,和截断除法的逻辑完全匹配。

用法示例

>>> import math
>>> # 向下取整取模(默认%运算符)
>>> -9 % 4
3
>>> -61 % 60
59
>>> 9 % -4
-3

>>> # 截断取模(math.fmod)
>>> math.fmod(-9, 4)
-1.0
>>> math.fmod(-61, 60)
-1.0
>>> math.fmod(9, -4)
1.0

补充说明

math.fmod返回值为浮点数类型,如果需要整数类型的结果,既可以对返回值做int()类型转换,也可以直接用极简逻辑实现整数版截断取模:

def trunc_mod(a: int, b: int) -> int:
    return a - b * int(a / b)

验证效果:

>>> trunc_mod(-9, 4)
-1
>>> trunc_mod(-61, 60)
-1
>>> trunc_mod(9, -4)
1

注意不要和math.remainder()混淆,该函数采用就近取整规则计算余数,既不属于向下取整取模,也不属于截断取模,不符合截断取模的需求。


内容的提问来源于stack exchange,提问作者echo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:24:18