Check if a number is int or float
我是这样做的:
1 2 3 4 5 6 | inNumber = somenumber inNumberint = int(inNumber) if inNumber == inNumberint: print"this number is an int" else: print"this number is a float" |
像那样。有没有更好的方法?
使用IsTrime.
1 2 3 4 5 6 | >>> x = 12 >>> isinstance(x, int) True >>> y = 12.0 >>> isinstance(y, float) True |
所以:
1 2 3 4 | >>> if isinstance(x, int): print 'x is a int!' x is a int! |
编辑:
如前所述,在长整数的情况下,上述方法不起作用。所以你需要做的是:
1 2 3 4 5 6 | >>> x = 12L >>> import numbers >>> isinstance(x, numbers.Integral) True >>> isinstance(x, int) False |
我最喜欢@ninjagecko的回答。
这也会起作用:
for Python 2.x
1 | isinstance(n, (int, long, float)) |
Python 3.x doesn't have long
1 | isinstance(n, (int, float)) |
复数也有复数类型
一班轮:
1 | isinstance(yourNumber, numbers.Real) |
这样可以避免一些问题:
1 2 | >>> isinstance(99**10,int) False |
演示:
1 2 3 4 5 6 7 8 9 10 11 12 | >>> import numbers >>> someInt = 10 >>> someLongInt = 100000L >>> someFloat = 0.5 >>> isinstance(someInt, numbers.Real) True >>> isinstance(someLongInt, numbers.Real) True >>> isinstance(someFloat, numbers.Real) True |
请求宽恕比请求许可更容易。只需执行操作即可。如果它起作用,物体是可接受的、合适的、合适的类型。如果操作不起作用,则对象的类型不合适。了解这种类型很少有帮助。
只需尝试操作并查看它是否工作。
1 2 3 4 5 6 7 8 9 10 11 | 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 |
你也可以用OCx1〔0〕来做例子:
1 2 | if type(inNumber) == int : print"This number is an int" elif type(inNumber) == float : print"This number is a float" |
您可以使用模来确定x是否是数字整数。
1 2 3 4 5 | def isInt(x): if x%1 == 0: print"X is an integer" else: print"X is not an integer" |
这里有一段代码检查一个数字是否是整数,它适用于python 2和python 3。
1 2 3 4 5 6 7 8 9 | 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有两种类型:
如果您想检查您的号码是否是代表
1 | (isinstance(yourNumber, float) and (yourNumber).is_integer()) # True for 3.0 |
如果你不需要区分int和float,并且两者都可以,那么Ninjagecko的答案就是要走的路。
1 2 3 | import numbers isinstance(yourNumber, numbers.Real) |
我知道这是一条旧线,但这是我正在使用的东西,我想它可能会有所帮助。
它在python 2.7和python 3中工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | def is_float(num): """ Checks whether a number is float or integer Args: num(float or int): The number to check Returns: True if the number is float """ return not (float(num)).is_integer() class TestIsFloat(unittest.TestCase): def test_float(self): self.assertTrue(is_float(2.2)) def test_int(self): self.assertFalse(is_float(2)) |
这个解决方案怎么样?
1 2 3 4 | if type(x) in (float, int): # do whatever else: # do whatever |
请检查:导入编号
1 2 3 4 5 6 7 8 9 10 11 | 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,需要比较值而不是类型。
在python版本3.6.3 shell中尝试过
1 2 3 4 5 6 | >>> x = 12 >>> import numbers >>> isinstance(x, numbers.Integral) True >>> isinstance(x,int) True |
找不到任何工作。
试试这个…
1 2 3 4 | def is_int(x): absolute = abs(x) rounded = round(absolute) return absolute - rounded == 0 |
1 2 3 4 5 6 7 8 9 10 | 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 |
1 2 3 4 | if myVariable.isnumeric: print('this varibale is numeric') else: print('not numeric') |