关于python:检查数字是int还是float

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是否是数字整数。isinstance(x, int)方法仅确定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有两种类型:intlong,而python 3只有int类型。来源。

如果您想检查您的号码是否是代表intfloat,请执行此操作

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


variable.isnumeric检查值是否为整数:

1
2
3
4
 if myVariable.isnumeric:
    print('this varibale is numeric')
 else:
    print('not numeric')