检查数字是int还是float

时间:2010-12-27 19:14:42

标签: python

我是这样做的:

inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
    print "this number is an int"
else:
    print "this number is a float"

类似的东西。
有没有更好的方法来做到这一点?

17 个答案:

答案 0 :(得分:220)

使用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!

_EDIT:_

正如所指出的,如果是长整数,则上述情况不起作用。所以你需要这样做:

>>> x = 12L
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x, int)
False

答案 1 :(得分:59)

我喜欢@ninjagecko的回答最多。

这也有效:

  

for Python 2.x

isinstance(n, (int, long, float)) 
  

Python 3.x没有 long

isinstance(n, (int, float))

复杂数字

还有 复杂 类型

答案 2 :(得分:44)

一衬垫:

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

答案 3 :(得分:13)

要求宽恕比要求许可更容易。只需执行操作即可。如果它起作用,则该物体是可接受的,合适的,合适的类型。如果操作不起作用,则该对象不是合适的类型。知道类型很少有帮助。

只需尝试操作,看看它是否有效。

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

答案 4 :(得分:7)

您还可以使用type() 例如:

if type(inNumber) == int : print "This number is an int"
elif type(inNumber) == float : print "This number is a float"

答案 5 :(得分:5)

您可以使用modulo来确定x是否为数字整数。 isinstance(x, int)方法仅根据类型确定x是否为整数:

def isInt(x):
    if x%1 == 0:
        print "X is an integer"
    else:
        print "X is not an integer"

答案 6 :(得分:4)

我知道这是一个旧线程,但这是我正在使用的东西,我认为它可能会有所帮助。

它适用于python 2.7和python 3<

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

答案 7 :(得分:3)

请检查:导入数字

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是float但是值是整数,所以如果你想检查值是整数,你不能使用isinstance,你需要比较值而不是类型。

答案 8 :(得分:3)

这个解决方案怎么样?

if type(x) in (float, int):
    # do whatever
else:
    # do whatever

答案 9 :(得分:1)

您可以使用简单的if语句来完成

要检查浮动

如果type(a)== type(1.1)

要检查整数类型

如果type(a)== type(1)

答案 10 :(得分:0)

使用python最基础的类型推断:

>>> # Float Check
>>> myNumber = 2.56
>>> print(type(myNumber) == int)
False
>>> print(type(myNumber) == float)
True
>>> print(type(myNumber) == bool)
False
>>>
>>> # Integer Check
>>> myNumber = 2
>>> print(type(myNumber) == int)
True
>>> print(type(myNumber) == float)
False
>>> print(type(myNumber) == bool)
False
>>>
>>> # Boolean Check
>>> myNumber = False
>>> print(type(myNumber) == int)
False
>>> print(type(myNumber) == float)
False
>>> print(type(myNumber) == bool)
True
>>>

我认为最简单、最有弹性的方法

答案 11 :(得分:0)

absolute = abs(x)
rounded = round(absolute)
if absolute - rounded == 0:
  print 'Integer number'
else:
  print 'notInteger number'

答案 12 :(得分:0)

在Python版本3.6.3 Shell中尝试

>>> x = 12
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x,int)
True

无法找出适用的任何内容。

答案 13 :(得分:0)

试试这个......

def is_int(x):
  absolute = abs(x)
  rounded = round(absolute)
  return absolute - rounded == 0

答案 14 :(得分:-1)

更新:试试这个


inNumber = [32, 12.5, 'e', 82, 52, 92, '1224.5', '12,53',
            10000.000, '10,000459', 
           'This is a sentance, with comma number 1 and dot.', '121.124']

try:

    def find_float(num):
        num = num.split('.')
        if num[-1] is not None and num[-1].isdigit():
            return True
        else:
            return False

    for i in inNumber:
        i = str(i).replace(',', '.')
        if '.' in i and find_float(i):
            print('This is float', i)
        elif i.isnumeric():
            print('This is an integer', i)
        else:
            print('This is not a number ?', i)

except Exception as err:
    print(err)

答案 15 :(得分:-1)

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

答案 16 :(得分:-5)

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

 if myVariable.isnumeric:
    print('this varibale is numeric')
 else:
    print('not numeric')