检查一个数字是int还是float
以下是我如何做到的:
inNumber = somenumber inNumberint = int(inNumber) if inNumber == inNumberint: print "this number is an int" else: print "this number is a float"
就是这样
有没有更好的方法来做到这一点?
使用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
一内胆:
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
我最喜欢@ ninjagecko的答案。
这也将工作:
isinstance(n, (int, long, float))
请求宽恕比请求许可容易。 只需执行操作。 如果它起作用,那么这个物体是可以接受的,合适的,适当的types。 如果操作不起作用,则该对象不是合适的types。 知道types很less有帮助。
只需尝试操作,看看它是否工作。
inNumber = somenumber try: inNumberint = int(inNumber) print "this number is an int" except ValueError: pass try: inNumberfloat = float(inNumber) print "this number is a float" except ValueError: pass
你可以做的也是使用type()
例子:
if type(inNumber) == int : print "This number is an int" elif type(inNumber) == float : print "This number is a float"
下面是一段代码,用于检查数字是否为整数,它适用于Python 2和Python 3。
import sys if sys.version < '3': integer_types = (int, long,) else: integer_types = (int,) isinstance(yourNumber, integer_types) # returns True if it's an integer isinstance(yourNumber, float) # returns True if it's a float
请注意,Python 2的types都是int
和long
,而Python 3只有int
types。 来源 。
如果你想检查你的数字是否是一个表示一个int
的float
,那就这样做
(isinstance(yourNumber, float) and (yourNumber).is_integer()) # True for 3.0
如果你不需要区分int和float,并且两者都可以,那么ninjagecko的答案是要走的路
import numbers isinstance(yourNumber, numbers.Real)
请检查这一点:导入数字
import math a = 1.1 - 0.1 print a print isinstance(a, numbers.Integral) print math.floor( a ) if (math.floor( a ) == a): print "It is an integer number" else: print False
虽然X是浮点数,但值是整数,所以如果你想检查的值是整数,你不能使用isinstance,你需要比较值而不是types。
您可以使用模数来确定x是否是一个整数数字。 isinstance(x, int)
方法仅通过types确定x是否为整数:
def isInt(x): if x%1 == 0: print "X is an integer" else: print "X is not an integer"
def is_int(x): absolute = abs(x) rounded = round(absolute) if absolute - rounded == 0: print str(x) + " is an integer" else: print str(x) +" is not an integer" is_int(7.0) # will print 7.0 is an integer
variable.isnumeric
检查一个值是否是一个整数:
if myVariable.isnumeric: print('this varibale is numeric') else: print('not numeric')