Python确保x是一个int,而不是一个讨厌的浮点数

时间:2010-05-30 15:43:38

标签: python

例如:

import random
x = random.randint(1, 6)
y = 2
new = x / y
...

现在,让我们说x原来是5。 在我的程序中执行其他操作之前,如何才能捕获它是int还是float?

4 个答案:

答案 0 :(得分:2)

默认情况下,如果你没有

,整数除法在python 2中有点意外
from __future__ import division

示例:

>>> 5 / 3
1
>>> isinstance(5 / 3, int)
True

说明:Why doesn’t this division work in python?

最后,您始终可以将数字转换为int:

>>> from __future__ import division
>>> int(5/3)
1

答案 1 :(得分:1)

如果你希望new总是一个int,那么一个选项就是分区:

new = x // y

另一个是圆形:

new = int(round(x/y))

如果相反,你只想检查new是否是浮点数,这在Python中有点不寻常(通常,不需要进行类型检查)。如果是这样,请告诉我们更多关于您想要检查的为什么的信息,您将获得更好的指导。

答案 2 :(得分:0)

isinstance(x, int)

但你很少需要这样做。仔细检查标准库可能不是其中之一。 :)

请注意,在某些情况下您也可以捕获异常(尽管这不适用于此示例)。

答案 3 :(得分:0)

如果您不介意被截断的值(5.7将变为5),您可以简单地将其强制转换为int。

must_be_an_int = int(x)

如果由于某种原因x是python无法转换为int的东西,它将引发ValueError异常。