Python商vs remaind

2024-05-20 22:58:21 发布

您现在位置:Python中文网/ 问答频道 /正文

python 2.6文档声明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等)。


Tags: 文档orghttp声明docs定义htmllibrary
3条回答

你把divisionmodulus搞混了。

“0.5,0.333333,0.25”等,如我所料(1/2=0.5等)

这是除法的结果。

模量

模(%)是整数除法后的余数。

示例值是简单的除法,即/运算符。不是%运算符。

我想你可以通过这样做得到你想要的结果:

for i in range(2, 11):
    print 1.0*(1 % i) / i

这将计算其他人解释的(整数)余数。然后再除以分母,得到商的小数部分。

请注意,我将模运算的结果乘以1.0,以确保执行浮点除法运算(而不是整数除法,这将导致0)。

模是在整数上下文中执行的,而不是小数(余数是整数)。因此:

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

How do I get the actual remainder of x / y?

我想你的意思是做一个常规的浮点除法?

for i in range(2, 11):
    print 1.0 / i

相关问题 更多 >