kar*_*oss 5 c++ python integer-division
在c ++和python编程语言中,非正数除法是完全不同的:
//c++:
11 / 3 = 3
11 % 3 = 2
(-11) / 3 = -3
(-11) % 3 = -2
11 / (-3) = -3
11 % (-3) = 2
(-11) / (-3) = 3
(-11) % (-3) = -2
Run Code Online (Sandbox Code Playgroud)
所以,正如你所看到的,c ++正在最小化商.但是,python的行为如下:
#python
11 / 3 = 3
11 % 3 = 2
(-11) / 3 = -4
(-11) % 3 = 1
11 / (-3) = -4
11 % (-3) = -1
(-11) / (-3) = 3
(-11) % (-3) = -2
Run Code Online (Sandbox Code Playgroud)
我不能编写自己的除法函数,就像c ++一样,因为我会用它来检查c ++计算器程序,而python不支持中缀运算符.我可以让python表现得像c ++,同时以简单的方式划分整数吗?例如,设置一些标志或类似的东西?
正如 Thomas K 所说,使用math.fmodfor modulo,或者如果你真的想要,你可以自己定义它:
def cmod(x, y):
return abs(x) % abs(y) * (1 if x > 0 else -1)
Run Code Online (Sandbox Code Playgroud)
这个函数应该模拟 C 风格的除法:
def cdiv(x, y):
return abs(x) / abs(y) * cmp(x, 0) * cmp(y, 0)
Run Code Online (Sandbox Code Playgroud)
你说你必须使用/and%运算符。这是不可能的,因为您无法覆盖内置运算符。但是,您可以定义自己的整数类型和运算符重载__div__和__mod__运算符。