检查号码是否在

2024-04-24 06:29:18 发布

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

我是这样做的:

inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
    print "this number is an int"
else:
    print "this number is a float"

差不多吧。
有没有更好的方法来做这个?


Tags: 方法annumberifisfloatthiselse
3条回答

使用isinstance

>>> x = 12
>>> isinstance(x, int)
True
>>> y = 12.0
>>> isinstance(y, float)
True

所以:

>>> if isinstance(x, int):
        print 'x is a int!'

x is a int!

编辑:

如前所述,在长整数的情况下,上述方法不起作用。所以你需要:

>>> x = 12L
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x, int)
False

我最喜欢“忍者壁虎”的回答。

这也会起作用:

for Python 2.x

isinstance(n, (int, long, float)) 

Python 3.x doesn't have long

isinstance(n, (int, float))

复数也有复数类型

一行:

isinstance(yourNumber, numbers.Real)

这避免了一些问题:

>>> isinstance(99**10,int)
False

演示:

>>> import numbers

>>> someInt = 10
>>> someLongInt = 100000L
>>> someFloat = 0.5

>>> isinstance(someInt, numbers.Real)
True
>>> isinstance(someLongInt, numbers.Real)
True
>>> isinstance(someFloat, numbers.Real)
True

相关问题 更多 >