Python 中总是 int 除 int = float

use*_*ser 2 python integer

我的问题是当我除以如下数字时: 10 / 2 \xe2\x86\x92 整数/整数。

\n

结果是5.0,是float,但不应该是float。问题是Python 给每个接受的数字加上0.0 来除以第二个数字。

\n

所以我希望 10/2 是整数。

\n

我试过

\n
x = 10\ny = x/2\ntype(y) == int\n
Run Code Online (Sandbox Code Playgroud)\n

它打印错误。我想要 type(y) 打印真实结果,尽管 x 是素数或奇数。

\n

Pau*_*ton 5

/给出浮点结果。如果您想要整数结果,请使用//.

它这样工作的原因是如果你有类似的东西

function1() / function2()
Run Code Online (Sandbox Code Playgroud)

即使您不知道各个函数返回的类型,也可以判断结果的类型。

编辑1

请注意,情况并非总是如此。这是一个“新的”Python 3 行为,也适用于 Python 2.2 及以上版本(但默认情况下不活动) - 请参阅PEP 238。感谢@Steve314 指出了这一点。

编辑2

然而,似乎您真正想做的是判断一个数字是否完全符合另一个数字。为此,您应该使用%(余数)

print(15 % 5 == 0) 
print(16 % 3 == 0)
Run Code Online (Sandbox Code Playgroud)

这打印

True
False
Run Code Online (Sandbox Code Playgroud)

编辑3

如果您希望结果的类型取决于除法是否精确,您需要这样做

a // b if a % b == 0 else a / b 
Run Code Online (Sandbox Code Playgroud)