检查一个数字是整数还是浮点数
这是我做到的方式:
inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
print "this number is an int"
else:
print "this number is a float"
差不多就是这样。
有没有更好看一点的方法来实现这个?
19 个回答
66
(注意:在CPython中,对于布尔类型(bool
),这会返回True
,这可能不是你想要的。感谢评论者的提醒。)
一行代码:
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
158
我最喜欢@ninjagecko的回答。
这个方法也可以用:
适用于Python 2.x版本
isinstance(n, (int, long, float))
Python 3.x版本没有long这种类型
isinstance(n, (int, float))
还有一种类型complex是用来表示复数的
403
使用 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