Python 3整数除法.如何使数学运算符与C一致

pic*_*c11 19 python-3.x

我需要从C到Python移植相当多的公式,反之亦然.确保在此过程中没有任何中断的最佳方法是什么?

我希望我的问题听起来不太一般.我主要担心自动int/int = float转换.

sch*_*der 32

您可以使用//运算符,它执行整数除法,但它不是您对C的期望:

这里引用:

//运算符执行奇怪的整数除法.当结果为正时,您可以将其视为截断(不舍入)到0位小数,但要小心.

当整数除数为负数时,//运算符将"向上"舍入为最接近的整数.从数学的角度来说,它是向下"舍入",因为-6小于-5,但如果你期望它截断到-5,它可能会让你失望.

例如,-11 // 2在Python返回时-6,-11 / 2C中的返回值-5.我建议编写并彻底单元测试一个"模拟"C行为的自定义整数除法函数.

我上面链接的页面也有一个指向PEP 238的链接,它有一些关于除法的有趣背景信息以及从Python 2到3的变化.有一些关于什么用于整数除法的建议,比如divmod(x, y)[0]int(x/y)正数,也许你'我会在那里找到更多有用的东西.

  • 需要"//"的"古怪"定义才能使'%`*不*古怪. (10认同)
  • 好的.我不知道`//'与C的地板部门不同. (5认同)