使用内置的 divmod() 函数可以直接同时获取商和余数,返回一个包含两个值的元组。该函数接受两个参数,分别代表被除数和除数,执行后会按照整数除法计算商,并返回对应的余数结果。

divmod() 处理浮点数时的行为是什么
当传入浮点数时,divmod() 依然有效,但返回的商是向下取整后的浮点数,余数则是原始值减去商与除数的乘积。这种机制保证了 a == (a // b) * b + a % b 始终成立,即使涉及小数也能保持数学一致性。

a = 8.4 b = 2.5 quotient, remainder = divmod(a, b) print(quotient, remainder)
预期输出:
3.0 0.9000000000000004
如何手动实现等效逻辑而不依赖内置函数
可以通过先计算向下取整的商,再用原值减去商与除数的乘积来得到余数。这种方式虽然多写了几行代码,但能更清晰地展示每一步的计算过程,适合需要自定义精度或异常处理的场景。

a = 8.4 b = 2.5 quotient = int(a // b) remainder = a - quotient * b print(quotient, remainder)
预期输出:
3 0.9000000000000004
负数输入下 divmod() 的符号规则是怎样的
在 Python 中,divmod() 遵循地板除(floor division)规则,即商的符号总是与除数一致,余数的符号则与被除数相同。这意味着无论正负输入,返回值都能满足恒等式,不会出现传统 C 语言中余数符号随被除数变化的情况。

















