【问题标题】:Always int divide int = float in Python在 Python 中总是 int 除 int = float
【发布时间】:2015-11-07 20:56:49
【问题描述】:

我的问题是当我将一个数字相除时:10 / 2 → 整数 / 整数。

结果是 5.0,它是浮点数,但它不应该是浮点数。问题是 Python 将 0.0 添加到每个接受与第二个数字相除的数字。

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

我试过了

x = 10
y = x/2
type(y) == int

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

【问题讨论】:

  • 为什么你需要结果是一个int?

标签: python integer


【解决方案1】:

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

这样做的原因是,如果你有类似的东西

function1() / function2()

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

编辑 1

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

编辑 2

但是,您似乎真正想做的是判断一个数字是否与另一个数字完全匹配。为此,您应该使用%(余数)

print(15 % 5 == 0) 
print(16 % 3 == 0)

这会打印出来

True
False

编辑 3

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

a // b if a % b == 0 else a / b 

【讨论】:

  • 它试图除以 exp : x= 10 / 5 type(x) == int 并且它的 print false 它应该是 int
  • 我试过 x = 10 y= x/2 type(y)== int it print false
  • @user_user 试试x = 10 y = x // 2 print(type(y) == int)。你应该得到true。
  • 好的,当我将 x 更改为 x=9 y= x//2 type(y)== int 它将是 true 并且它是 false
  • @user_user 当您执行// 时,结果是一个int,即使第二个数字没有完全进入第一个。我认为它的工作原理是将数字除以整数。
猜你喜欢
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
相关资源
最近更新 更多