检查一个数字是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都是intlong ,而Python 3只有inttypes。 来源 。

如果你想检查你的数字是否是一个表示一个intfloat ,那就这样做

 (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')