为什么在Python 1.0中== 1>>>真正; -2.0 == -2>>>真等等?

时间:2014-01-26 01:36:40

标签: python python-2.7 floating-point integer

我想创造条件,而数字必须是整数。当x == 1.0时,x == int(x)没有帮助... 谢谢。

4 个答案:

答案 0 :(得分:9)

isinstance(x, (int, long))

isinstance测试第一个参数是否是第二个参数指定的一个或多个类型的实例。我们指定(int, long)来处理Python自动切换到long以表示非常大的数字的情况,但如果您确定要排除int,则可以使用long秒。有关详细信息,请参阅docs

至于为什么1.0 == 1,因为1.01代表相同的数字。 Python不要求两个对象具有相同的类型,以使它们被认为是相同的。

答案 1 :(得分:1)

在python上不大,但我用它来检查:

i = 123
f = 123.0

if type(i) == type(f) and i == f:
    print("They're equal by value and type!")      
elif type(i) == type(f):
    print("They're equal by type and not value.")
elif i == f:
    print("They're equal by value and not type.")
else:
    print("They aren't equal by value or type.")

返回:

They're equal by value and not type.

答案 2 :(得分:0)

检查它是否为整数。

>>> def int_check(valuechk, valuecmp):
        if valuechk == valuecmp and type(valuechk) == int:
                return True
        else:
                return False

>>> int_check(1, 1)
True
>>> int_check(1.0, 1)
False

答案 3 :(得分:0)

Python将整数值转换为其实等值,然后检查两个值,因此在检查值对等时答案为true,但如果在检查类型对等则答案为false。