python 2.6 docs声明x % y
被定义为x / y(http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex)的余数。我不清楚实际发生了什么,如:
for i in range(2, 11):
print 1.0 % i
按照我的预期打印“1.0”十次,而不是“0.5,0.333333,0.25”等(1/2 = 0.5等)。
答案 0 :(得分:10)
模数在整数上下文中执行,而不是小数(余数是整数)。因此:
1 % 1 = 0 (1 times 1 plus 0)
1 % 2 = 1 (2 times 0 plus 1)
1 % 3 = 1 (3 times 0 plus 1)
6 % 3 = 0 (3 times 2 plus 0)
7 % 3 = 1 (3 times 2 plus 1)
8 % 3 = 2 (3 times 2 plus 2)
etc
如何获得x / y的实际余数?
我认为你的意思是做一个常规的浮点除法?
for i in range(2, 11):
print 1.0 / i
答案 1 :(得分:8)
我认为你可以通过这样的方式得到你想要的结果:
for i in range(2, 11):
print 1.0*(1 % i) / i
这计算其他人解释的(整数)余数。然后再用分母除以产生商的小数部分。
请注意,我将模运算的结果乘以1.0,以确保完成浮点除法运算(而不是整数除法,这将导致0)。
答案 2 :(得分:4)
“0.5,0.333333,0.25”等正如我所料(1/2 = 0.5等)。“
这是分裂的结果。
不模数。
模数(%
)是整数除法后剩余的余数。
您的样本值是简单除法,即/
运算符。不是%
运营商。
答案 3 :(得分:3)
不会将1除以大于它的数字而得到0而余数为1吗?
人群中的理论师可以纠正我,但我认为模数/余数仅在整数上定义。
答案 4 :(得分:1)
我们可以有2种类型的划分,我们可以通过返回类型来定义:
Float:a / b。例如:3/2 = 1.5
def division(a,b):
return a/b
Int:a // b和a%b。例如:3 // 2 = 1和3%2 = 1
def quotient(a,b):
return a//b
def remainder(a,b):
return a%b